与 first()/all() 链接时,Laravel Eager 加载缺失的关系
Posted
技术标签:
【中文标题】与 first()/all() 链接时,Laravel Eager 加载缺失的关系【英文标题】:Laravel Eager Loading missing relationships when chained with first()/all() 【发布时间】:2012-12-16 05:26:48 【问题描述】:使用 L3 可以正常工作:
$r = Site::with('services')->get()
这完全符合我的预期。一组Site
对象,services 关系都整齐地填充。
但是,如果我只使用以下内容:
$r = Site::with('services')->first()
或
$r = Site::with('services')->all()
站点对象的关系完全为空。
这对我来说感觉像是一个错误,但我正在尝试做的事情有什么不对吗?目前要获得与使用first()
代替get()
相同的效果,我必须从返回的数组中提取第一个元素。
【问题讨论】:
【参考方案1】:首先,使用->first()
应该可以正常工作。再试一次,我有,它有效。如果它不适合您,请检查您的版本。我的是 3.2.10。
->all()
不应该那样工作,它只是一个简单的快捷方式。 docs say 要检索整个表,请使用 static all
方法。请注意,它是一个静态方法,您在对象上下文中使用它。不过不管怎样,你可以忘记这个并使用->get()
,这有什么问题?
如果你查看源代码laravel/database/eloquent/model.php
,你会看到:
public static function all()
return with(new static)->query()->get();
如您所见,此函数只是创建一个新的Model
,然后检索所有行。
【讨论】:
以上是关于与 first()/all() 链接时,Laravel Eager 加载缺失的关系的主要内容,如果未能解决你的问题,请参考以下文章
原创翻译 Ten Questions About the NBA's First All-Star Draft
解决方法:Keil提示错误信息error: L6235E: More than one section matches selector - cannot all be FIRST/LAST.
解决方法:Keil提示错误信息error: L6235E: More than one section matches selector - cannot all be FIRST/LAST.
If only it could be all the same like we first me
将 BeautifulSoup 4 的 `find_all` 与正则表达式一起使用时,如何访问正则表达式匹配捕获组?
sh 来自http://stackoverflow.com/questions/35965783/delete-all-lines-before-first-occurrence-of-specifi