我想获取所有没有关系的模型。
类似于获取具有一个的模型:
return $this->model->has('quote')->orderBy('created_at', 'desc')->get();
我基本上想要反过来。我找不到任何文件来做到这一点。
基本上这个查询:
SELECT * FROM custom_design_requests
RIGHT JOIN quotes
ON quotes.`custom_design_request_id` = `custom_design_requests`.id
但我想避免使用查询构建器(DB::table('custom_design_requests')->rightJoin('quotes', 'quotes.custom_design_request_id', '=', 'custom_design_requests.id')->get();
),以便我有一组模型实例。
由于
答案 0 :(得分:12)
您可以尝试这样的事情:
$this->model->has('quote', '<', 1)->orderBy('created_at', 'desc')->get();
答案 1 :(得分:8)
我认为这比公认的解决方案更好:
$this->model->doesntHave('quote')->orderBy('created_at', 'desc')->get();
这里有更详细的描述:
https://laravel.com/docs/5.4/eloquent-relationships#querying-relationship-absence
答案 2 :(得分:2)
尝试:
return $this->model
->leftJoin('quotes', 'quotes.custom_design_request_id', '=', 'custom_design_requests.id')
->whereNull('quotes.custom_design_request_id')
->orderBy('created_at', 'desc')->get();
这将使用引号 LEFT JOIN 您的模型,并且仅采用那些没有相应引号的模型。