在Laravel 5中合并'with'和'whereHas'

在Laravel 5中合并'with'和'whereHas',第1张

在Laravel 5中合并'with'和'whereHas'

在性能方面,您实际上无法在此进行任何优化(除非您要从雄辩的关系转向联接)。有或没有

whereHas
,将运行两个查询。一个选择所有用户,另一个选择加载相关模型。当您添加
whereHas
条件时,将添加一个子查询,但是仍然是两个查询。

但是,从语法上讲,您可以通过向模型(甚至是基础模型,如果您想更频繁地使用它)添加查询范围来对此进行一点优化:

public function scopeWithAndWhereHas($query, $relation, $constraint){    return $query->whereHas($relation, $constraint)      ->with([$relation => $constraint]);}

用法:

User::withAndWhereHas('submissions', function($query) use ($id){    $query->where('taskid', $id);})->get();


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5600155.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-15
下一篇 2022-12-15

发表评论

登录后才能评论

评论列表(0条)

保存