Problème avec foreign key
Bonjour a tous,
Pouvez vous m'aider a voir plus clair sur mon problème de clé étrangere s'il vous plait. Surtout que ca avait marché dans mon projet précedant alors que maintenant j'ai ceci au moment ou je lance php artisan migration
:
SQLSTATE[HY000]: General error: 1005 Can't create table 'BASE_vmv_dev.#sql-766_ea319' (errno: 150) (SQL: alter table `documents_translations` add constraint `documents_translations_document_id_foreign` foreign key (`document_id`) references `documents` (`id`) on delete cascade)
2020_10_20_085132_create_documents_table.php
public function up()
{
Schema::create('documents', function (Blueprint $table) {
$table->integer('id');
$table->integer('imageable_id');
$table->string('imageable_type');
$table->integer('order')->nullable();
$table->string('code')->default('fr');
$table->timestamps();
});
}
2020_10_20_085208_create_documents_translations_table.php
public function up()
{
Schema::create('documents_translations', function (Blueprint $table) {
$table->integer('id');
$table->unsignedInteger('document_id');
$table->string('title')->nullable();
$table->string('full_path');
$table->string('locale')->index();
$table->unique(['document_id','locale']);
$table->foreign('document_id')->references('id')->on('documents')->onDelete('cascade');
$table->timestamps();
});
}
Merci d'avance a toutes aides.
Salut,
Je pense que le type de ta clé primaire sur la table documents n'est pas bon, remplace avec ça :
$table->id();
Dans la table documents_translations tu peux simplifier :
$table->foreignId('document_id')->constrained('documents')->onDelete('cascade');
Merci encore bestmomo, Je remarque du coup que j'ai pas assez de connaissances dans les régles sql pour faire mes tables correctement. Je vais voir les tutos à ce sujet.
Ce que j'ai appris est que la clé étrangère doit etre du même type que l'id de liaison.
Merci encore
Vous ne pouvez pas répondre à ce sujet.