0

私は答えを求めてここを見回してきましたが、何もうまくいかないようです。Laravel と Sentry 2 の基本インストールを行いました。まず、users テーブルに client_id 列を追加するために、この移行を追加しました。

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 に答える