Laravel France

Problème avec foreign key

Avatar de Kalibot
Kalibot

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.

Posté il y a 1 mois
Avatar de bestmomo
bestmomo

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');

Posté il y a 1 mois
Avatar de Kalibot
Kalibot

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

Posté il y a 1 mois

Vous ne pouvez pas répondre à ce sujet.