Laravel 仅在不存在相关模型时才删除模型

ome*_*ooq 2 php laravel eloquent laravel-5

假设我有一个名为“制造商”的模型,这个模型与另一个模型“车辆”有一对多的关系。现在,如果有任何与此型号相关的车辆,我不想让用户删除制造商。

//In Manufacturer model

public function vehicles()
{
    return $this->hasMany('Vehicle');
}
Run Code Online (Sandbox Code Playgroud)

在存储库/控制器中,我有另一种方法来检查它。

public function checkAssociatedVehicles($id)
{
    return Manufacturer::with('vehicles')->find($id)->toJson();
}
Run Code Online (Sandbox Code Playgroud)

这确实输出了所有相关车辆的制造商数据。但这效率不高,所以我只想检查一下是否有一辆汽车,然后不要删除制造商。

use*_*496 6

我相信你会想用这种has方法来确保制造商有一些车辆。

$manufacture = Manufacturer::has('vehicles')->find($id);
Run Code Online (Sandbox Code Playgroud)

那么你只想确保 !is_null($manufacture)

  • `has()` 我们用于急切加载,这并不是这里真正需要发生的。相反,我只会计算车辆而不去取它们。假设已经获取了`$manufacturer`模型,并且模型中添加了`vehicles`关系方法:`$manufacturer->vehicles()->count()` (3认同)