如何检查我从与其他多个表相关的表中使用的ID?

时间:2018-10-23 04:29:28

标签: laravel

当我想从表中删除一行时,我想检查使用该行ID的表。如果使用,则不允许删除。

2 个答案:

答案 0 :(得分:0)

您可以简单地检查行中的特定列(包含其他表的键)是否为空或为null,如果为空,则删除该行,否则跳过该行。 您有两种方法可以做到这一点-

  1. 雄辩地通过主键获取行并检查集合中的属性。
  2. 在数据库中编写一个存储过程,并在您的Laravel代码中调用它。

答案 1 :(得分:0)

您可以使用deleting模型事件来检查关系是否存在。如果这样做,则阻止删除。

https://laravel.com/docs/5.7/eloquent#events

如果您为模型创建观察者,则可以使用以下方式:

public function deleting($model)
{
    if($model->someRelation->count()) {    // replace ->someRelation with whatever you want to check
        return false;   // prevent delete
    }
    if($model->anotherRelation->count()) {
        return false;   // prevent delete
    }
}