Yau*_*hyk 16 eager-loading laravel eloquent
在我的项目中,我有许多Eloquent模型,它们在类中配置了如下所示的热切关系:
protected $with = [ 'countries', 'roles' ];
Run Code Online (Sandbox Code Playgroud)
但有时我只需要旧的普通模型而没有任何关系.我能以某种方式做到:
Model::noRelations()->all()
Run Code Online (Sandbox Code Playgroud)
真的不想使用查询构建器,也不想在少数情况下创建另一个类.
Tho*_*Kim 32
如果必须$with在模型上设置属性而不是将其保留为空,则可以手动覆盖需要急切加载的关系,如下所示:
Model::setEagerLoads([])->get();
Run Code Online (Sandbox Code Playgroud)
Yau*_*hyk 12
除了Thomas Kim的回答.
如果你无论如何扩展Eloquent\Model类并且经常需要从模型中剥离关系,这个解决方案可能很适合你.
在默认模型类中创建范围:
public function scopeNoEagerLoads($query){
return $query->setEagerLoads([]);
}
Run Code Online (Sandbox Code Playgroud)对于任何扩展该类的ORM,您将能够:
User::noEagerLoads()->all()
Run Code Online (Sandbox Code Playgroud)小智 5
就像问题说的那样
Model::without(['countries', 'roles' ])->all();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7425 次 |
| 最近记录: |