Php 获得所有没有关系的雄辩模型
我想获取所有没有关系的模型 与具有以下功能的获取模型类似:Php 获得所有没有关系的雄辩模型,php,laravel,laravel-5,eloquent,Php,Laravel,Laravel 5,Eloquent,我想获取所有没有关系的模型 与具有以下功能的获取模型类似: return $this->model->has('quote')->orderBy('created_at', 'desc')->get(); 我基本上想得到这个的倒数。但是,我找不到任何文档来执行此操作 基本上,这个查询: SELECT * FROM custom_design_requests RIGHT JOIN quotes ON quotes.`custom_design_request_id` =
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;,这样我就有了模型实例的集合
谢谢试试:
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();
这将使用引号加入您的模型,并且只接受那些没有相应引号的模型。您可以尝试以下方法:
$this->model->has('quote', '<', 1)->orderBy('created_at', 'desc')->get();
我认为这比公认的解决方案要好:
$this->model->doesntHave('quote')->orderBy('created_at', 'desc')->get();
这里更详细地描述了这一点:
非常感谢。这就成功了,我应该想到这一点虽然has方法看起来很容易使用,但是当您调用它时,应该记住雄辩在内部所做的事情。结果查询将为数据库中的每条记录运行一个子选择,如果数据量很大,则可能会导致效率低下。在上面的例子中,生成的SQL类似于:SELECT*FROM models,其中SELECT COUNT*FROM quotes,其中model_id=models.id<1谢谢,这同样有效。我确实更喜欢“引用”,“酷,我不知道你可以这样做,我想我今天也学到了一些新的东西:左连接是更有效的方式,我肯定会像这样对大数据集这样做。