Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 获得所有没有关系的雄辩模型_Php_Laravel_Laravel 5_Eloquent - Fatal编程技术网

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谢谢,这同样有效。我确实更喜欢“引用”,“酷,我不知道你可以这样做,我想我今天也学到了一些新的东西:左连接是更有效的方式,我肯定会像这样对大数据集这样做。