Laravel SQL查询模型关系

时间:2018-06-24 13:27:56

标签: laravel

假设以下示例:

我得到了汽车表,它们的主人和它们的类型表。

台式车: 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不存在。

我的查询是否还可以?有人可以帮我解决查询问题,以获得期望的结果吗?

1 个答案:

答案 0 :(得分:1)

您可以使用whereDoesntHave来获取所有者ID为1的不在car表中的所有类型

$owner_id = 1;

CarTypes::whereDoesntHave('cars', function ($query) use ($owner_id) {
    $query->where('owner_id', '=', $owner_id );
})->get();

Querying Relationship Absence

确保您的CarTypes模型具有汽车映射

public function cars(){
    return $this->hasMany('App\Cars', 'type_id');
}