0

我一直在这里寻找答案,但似乎没有任何效果。我已经完成了 Laravel 和 Sentry 2 的基本安装。首先,我添加了此迁移以将 client_id 列添加到 users 表。

Schema::table('users', function(Blueprint $table)
    {
        $table->integer('client_id')->unique;
    });

然后接下来我在不同的迁移中使用以下内容创建了我的客户表。

Schema::create('clients', function(Blueprint $table)
    {
        $table->increments('id');
        $table->timestamps();
        $table->integer('client_id')->unique;
        $table->string('client_name');
        $table->date('expiry');
        $table->integer('cals');
    });

最后,我创建了一个迁移,其中包含以下内容。

Schema::table('users', function(Blueprint $table)
    {
        $table->foreign('client_id')
            ->references('client_id')->on('clients')
            ->onDelete('cascade');
    });

我得到的错误如下;

SQLSTATE[HY000]: General error: 1215 Cannot add foreign key constraint (SQL: alter table `users` add constraint use
rs_client_id_foreign foreign key (`client_id`) references `clients` (`client_id`) on delete cascade)

我有点坚持我应该寻找的东西,它们都应该是索引吗?

4

1 回答 1

0
$table->integer('client_id')->unique;

此行应为:

$table->integer('client_id')->unique();

无论如何,如果您实际上是在尝试使用 'users' 表上的外键约束来引用 'clients' 表上的 'id' 列,请执行以下操作:

Schema::table('users', function(Blueprint $table)
{
    $table->integer('client_id')->unsigned();

    $table->foreign('client_id')
        ->references('id')->on('clients')
        ->onDelete('cascade');
});

Schema::create('clients', function(Blueprint $table)
{
    $table->increments('id');
    $table->timestamps();
    $table->string('client_name');
    $table->date('expiry');
    $table->integer('cals');
});
于 2014-03-24T20:52:41.250 回答