软删除与关系

时间:2014-06-20 13:08:59

标签: laravel laravel-4 eloquent

我有一本书和作者表。作者有很多书。一本书有一位作者。

我希望软删除作者。

所以我在authors表中有一个deleted_at字段(我还需要在books表中使用它吗?)。书架表中还有一个author_id外键。

我打电话:

Author::destroy($id);

但我收到错误:

Cannot delete or update a parent row: a foreign key constraint fails

我正在使用larval 4.1

以下是我的迁移:

Schema::create('authors', function($table) {
    $table->increments('id');
    $table->string('name');
    $table->timestamps();
    $table->softDeletes();
});

Schema::create('books', function($table) {
    $table->increments('id');
    $table->integer('author_id')->unsigned();
    $table->foreign('author_id')->references('id')->on('authors');
    $table->string('title'); // Varchar
    $table->string('isbn');  // Varchar
});

1 个答案:

答案 0 :(得分:0)

有没有想过级联删除?

//Suggested implementation , will this work ?
$table->foreign('author_id')->references('id')->on('authors')->onDelete('cascade');

// my current implementation
$table->foreign('product_id')->references('id')->on('products')->onDelete('cascade');