2017-05-05 6 views
0

gebildet Hey Jungs, die ich zu viele Sachen ausprobiert und einige Blogs lesen oder Diskussion, die ich repariere nicht mein Problem, das ich bin neu in Laravel dieses Projekt für meine Universität Lektion ... habe ich Fehler, wenn ich will Datenbank diese Fehler wieLaravel über Fremdschlüssel falsch

[Illuminate\Database\QueryException]           
SQLSTATE[HY000]: General error: 1005 Can't create table `moviestore`.`#sql- 
13df8_27` (errno: 150 "Foreign key constraint is incorrectly formed") (SQL: 
alter table `orders` add constraint `orders_address_id_foreign` foreign ke 
y (`address_id`) references `addresses` (`id`)) 

und dies ist mein Codes

public function up() 
{ 
    Schema::create('orders', function (Blueprint $table) { 
     $table->engine = 'InnoDB'; 
     $table->increments('id'); 
     $table->dateTime('OrderDate'); 
     $table->integer('TotalCount'); 
     $table->decimal('TotalPrice',20,2); 
     $table->integer('user_id')->unsigned(); 
     $table->integer('address_id')->unsigned(); 
     $table->timestamps(); 

     $table->foreign('user_id')->references('id')->on('users'); 
     $table->foreign('address_id')->references('id')->on('addresses'); 
    }); 

    // Schema::table('orders', function(Blueprint $table) 
    // { 
    //  $table->foreign('user_id')->references('id')->on('users'); 
    //  $table->foreign('address_id')->references('id')->on('addresses'); 
    // }); 
} 

/** 
* Reverse the migrations. 
* 
* @return void 
*/ 
public function down() 
{ 
    DB::statement('SET FOREIGN_KEY_CHECKS=0'); 
    Schema::dropIfExists('orders'); 
    DB::statement('SET FOREIGN_KEY_CHECKS=1'); 
} 

Adressen Tabellencode

public function up() 
{ 
    Schema::create('addresses', function (Blueprint $table) { 
     $table->engine = 'InnoDB'; 
     $table->increments('id'); 
     $table->string('FullAddress'); 
     $table->string('AddressType'); 
     $table->string('PhoneNumber'); 
     $table->integer('user_id')->unsigned(); 
     $table->timestamps(); 

     $table->foreign('user_id')->references('id')->on('users'); 
    }); 
} 

/** 
* Reverse the migrations. 
* 
* @return void 
*/ 
public function down() 
{ 
    DB::statement('SET FOREIGN_KEY_CHECKS=0'); 
    Schema::dropIfExists('addresses'); 
    DB::statement('SET FOREIGN_KEY_CHECKS=1'); 
} 
erstellen

Es gibt keine Beziehung zwischen den einzelnen Tabellen, wenn ich Tabellen enter image description here

+0

können Sie die Migrations-dass durch '$ table-> ausländische ('address_id') bezeichnet wird -> Referenzen ('id') -> auf ('Adressen');'? die Tabelle, die den Primärschlüssel haben. –

+0

@BagusTesa Dies ist GitHub Repo-Link https://github.com/emresandikci/moviestore-laravel – Emre

+0

das ist ... seltsam .. Ich kann nichts falsch sehen, dachte ich, es war einer von ihnen entweder 'bigIncrements' oder' smallIncrements' .. brauche ein anderes Paar Augen, um das zu überprüfen. –

Antwort

0

wandern Ich glaube, Sie benötigen eine Migrationsdatei zu aktualisieren, wie:

Zuerst Addresses Migration laufen, weil Addresses.id Fremdschlüssel orders.address_id

ist Adressen Tabellencode

public function up() 
{ 
    Schema::create('addresses', function (Blueprint $table) { 
     $table->engine = 'InnoDB'; 
     $table->increments('id'); 
     $table->string('FullAddress'); 
     $table->string('AddressType'); 
     $table->string('PhoneNumber'); 
     $table->integer('user_id')->unsigned(); 
     $table->timestamps(); 

     $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); 
    }); 
} 

/** 
* Reverse the migrations. 
* 
* @return void 
*/ 
public function down() 
{ 
    DB::statement('SET FOREIGN_KEY_CHECKS=0'); 
    Schema::dropIfExists('addresses'); 
    DB::statement('SET FOREIGN_KEY_CHECKS=1'); 
} 

Tabelle Orders

public function up() 
{ 
    Schema::create('orders', function (Blueprint $table) { 
     $table->engine = 'InnoDB'; 
     $table->increments('id'); 
     $table->dateTime('OrderDate'); 
     $table->integer('TotalCount'); 
     $table->decimal('TotalPrice',20,2); 
     $table->integer('user_id')->unsigned(); 
     $table->integer('address_id')->unsigned(); 
     $table->timestamps(); 

     $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); 
     $table->foreign('address_id')->references('id')->on('addresses')->onDelete('cascade'); 
    }); 


} 

/** 
* Reverse the migrations. 
* 
* @return void 
*/ 
public function down() 
{ 
    DB::statement('SET FOREIGN_KEY_CHECKS=0'); 
    Schema::dropIfExists('orders'); 
    DB::statement('SET FOREIGN_KEY_CHECKS=1'); 
} 
+0

Ich habe es gemacht und alle Tabellen erstellen Ich habe keinen Fehler, aber dieses Mal gibt es keine Beziehungen auf ER-Diagramm, was denken Sie? Ich habe meine Post bearbeitet, check die ss wie sieht bitte aus – Emre

Verwandte Themen