【发布时间】:2018-03-14 11:31:10
【问题描述】:
我正在使用 Laravel 框架,我有多个连接的表,当从 transactions 表中删除相关事务时,我可以成功地从 operations 表中删除一个操作,但我无法让它在相反,因为它会在迁移以及向operations 表中添加新行时引发错误。
Schema::create('operations', function (Blueprint $table) {
$table->increments('id');
$table->integer('car_id')->unsigned();
$table->string('operation');
$table->integer('transaction')->unsigned();
$table->timestamps();
});
Schema::table('operations', function($table) {
$table->foreign('car_id')->references('id')->on('cars')->onDelete('cascade');
$table->foreign('transaction')->references('id')->on('transactions')->onDelete('cascade');
});
我需要的是在删除相关操作时也删除事务:
Schema::create('transactions', function (Blueprint $table) {
$table->increments('id')->unsigned();
$table->string('status')->index();
$table->date('date')->index();
$table->string('user_added');
$table->string('note')->nullable();
$table->timestamps();
});
Schema::table('transactions', function($table) {
$table->foreign('id')->references('transaction')->on('operations')->onDelete('cascade');
});
有没有办法做到这一点?
现在它会在迁移时引发错误:
SQLSTATE[HY000]:一般错误:1215 无法添加外键 约束(SQL:改变表
transactions添加约束transactions_id_foreign外键 (i d) 引用operations(transaction) 删除级联)
这是正常的,因为operations 表按顺序排在transactions 之后,即使我将代码的第二部分放在operations 表中,当我开始向表中插入行时它也会引发类似的错误。
感谢您引导我找到解决方案。
【问题讨论】:
-
这是一个先有鸡还是先有蛋的问题:stackoverflow.com/questions/14838010/…