假设以下示例:
我得到了汽车表,它们的主人和它们的类型表。
台式车: id,owner_id,type_id
表类型: 名称,说明
我想获取所有类型的ID,这些ID不在台式车的type_id中,并且其owner_id为1。
我从视图中传递了所有者,并尝试了以下操作:
public function show(Owner $owner)
{
$cartypes =CarTypes::all()->whereNotIn('id', function($query) { $query->table('cars')->select('type_id')->where('owner_id', '=', $owner->id); })->get();
return view('sections.cars.show',compact('owner','cartypes'));
}
但是出现错误:方法Illuminate \ Database \ Query \ Builder :: table不存在。
我的查询是否还可以?有人可以帮我解决查询问题,以获得期望的结果吗?
答案 0 :(得分:1)
您可以使用whereDoesntHave
来获取所有者ID为1的不在car表中的所有类型
$owner_id = 1;
CarTypes::whereDoesntHave('cars', function ($query) use ($owner_id) {
$query->where('owner_id', '=', $owner_id );
})->get();
确保您的CarTypes
模型具有汽车映射
public function cars(){
return $this->hasMany('App\Cars', 'type_id');
}