4 回答
TA贡献1877条经验 获得超1个赞
像这样:
$order = Order::with([
'company:id,name,size',
'complaints:id,name,body',
'person',
'items',
'items.product:id,name,price',
'items.product.stockManagement',
'status:id',
'items.product.media',
'items.product.mainProduct',
'items.product.mainProduct.media'
])->findOrFail($id);
该文档对于特定列的加载非常简短(您甚至必须向下滚动一点到“急切加载特定列”的标题)。
您可能并不总是需要所检索的关系中的每一列。因此,Eloquent 允许您指定要检索关系的哪些列:
$books = App\Book::with('author:id,name')->get();
笔记:
使用此功能时,您应该始终将id 列和任何相关的外键列包含在您希望检索的列列表中。
TA贡献1966条经验 获得超4个赞
我遇到了同样的问题。您需要指定foreign id
not id (主键)。
例如:
Data::with('other:id,name')->get();
如果你自定义了外文名称就不行了。因此,您需要完整添加您的外部列名称。
Data::with('other:foreign_id,name')->get();
那会起作用的!
TA贡献1893条经验 获得超10个赞
您还可以为一些更高级的关系查询提供回调。
Order::with([
'company' => function ($q) {
$q->select('id', 'name');
}
])
TA贡献1848条经验 获得超6个赞
$order = Order::with(
['company' => function($query) {
$query->select('id','name','size')
}),
'complaints' => function($query) {
$query->select('id','name','body')
}),
'person',
'items',
'items.product' => function($query) {
$query->select('id','name','price')
}), 'items.product.stockManagement','status'=> function($query) {
$query->select('id')
}),'items.product.media', 'items.product.mainProduct', 'items.product.mainProduct.media'])->findOrFail($id);
- 4 回答
- 0 关注
- 183 浏览
添加回答
举报