我写了这个函数,但想知道是否有" laravel"如何做同样的功能?
我想删除其他表格中与我删除的行相关的所有行。
$id = 6;
$query = "SELECT TABLE_NAME, COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME = 'exercise_id'";
$tables = DB::select($query);
foreach ($tables as $table) :
$rows = DB::table($table->TABLE_NAME)
->select($table->COLUMN_NAME)
->where($table->COLUMN_NAME, '=', $id)
->delete();
endforeach;
答案 0 :(得分:3)
添加foreign key constraints并使用->onDelete('cascade')
:
$table->foreign('user_id')
->references('id')
->on('users')
->onDelete('cascade');
在这种情况下,其他表格中的所有相关数据都将自动删除。
答案 1 :(得分:2)
这通常通过在修改架构时对外键进行级联删除来完成。
参见https://laravel.com/docs/5.4/migrations#foreign-key-constraints 在那里,文档声明:
您也可以为“on delete”和“on”指定所需的操作 更新“约束的属性:
$table->foreign('user_id')
->references('id')
->on('users')
->onDelete('cascade');
PS:这种方法并不一定局限于laravel(laravel方式)