2017-04-24 75 views
0

需要帮助家伙!我的迁移有什么问题,它不会创建users表和posts表之间的关系。下面是我所做的:Laravel 5.1中的外键 - 无关系

  1. 迁移用户表
  2. 创造职位表
  3. 迁移职位表的外键

用户迁移

<?php 

use Illuminate\Database\Schema\Blueprint; 
use Illuminate\Database\Migrations\Migration; 

class CreateUsersTable extends Migration 
{ 
    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::create('users', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->string('name'); 
      $table->string('email')->unique(); 
      $table->string('password', 60); 
      $table->rememberToken(); 
      $table->timestamps(); 
     }); 
    } 

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     Schema::drop('users'); 
    } 
} 



帖子迁移

<?php 

use Illuminate\Database\Schema\Blueprint; 
use Illuminate\Database\Migrations\Migration; 

class CreatePostsTable extends Migration 
{ 
    /** 
    * Run the migrations. 
    * 
    * @return void 
    */ 
    public function up() 
    { 
     Schema::create('posts', function (Blueprint $table) { 
      $table->increments('id'); 
      $table->integer('user_id')->unsigned(); 
      $table->string('title', 255); 
      $table->text('content'); 
      $table->timestamps(); 

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

    /** 
    * Reverse the migrations. 
    * 
    * @return void 
    */ 
    public function down() 
    { 
     Schema::drop('posts'); 
    } 
} 



没有发生与我的数据库。看看我的数据库:

enter image description here



相比本:

enter image description here



..我使用Laravel 5.1

+0

任何错误?发布到? –

+0

检查数据库的列定义(类型,大小)是否相等。 –

+0

@MayankPandeyz没有错误显示。 –

回答

2

您需要分两步添加。 Schema::create()仅用于创建表格。

要添加关系,您需要在Schema::table()内编写关系。

尝试以下操作:

CreatePostsTable

public function up() 
{ 
    Schema::create('posts', function (Blueprint $table) { 
     $table->increments('id'); 
     $table->integer('user_id')->unsigned(); 
     $table->string('title', 255); 
     $table->text('content'); 
     $table->timestamps(); 
    }); 

    Schema::table('posts', function($table) { 
     $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade'); 
    }); 
} 
+0

我试过了,但没有发生。 –

+0

@LaravelMan如果表已创建,则需要添加新的迁移文件并在该文件中分配外键代码,然后运行迁移。 –

+0

@MeeraTank我也试过了,但仍然不能正常工作 –