Laravel 5.1中的外键 - 没有关系

时间:2017-04-24 07:17:12

标签: mysql laravel database-migration

需要帮助的人!我的迁移错误,它没有在users表和posts表之间创建关系。这就是我的所作所为:

  1. 迁移用户表
  2. 创建帖子表
  3. 使用外键迁移帖子表
  4. 用户迁移

    <?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

1 个答案:

答案 0 :(得分: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');
    });
}