Php 带([])的Laravel仅选择关系的某些列
编辑 这个问题是独特的,因为它提出了独特的问题,例如: 组件内部的关系。项目、产品、库存管理。 大量组件,这会导致链接问题的公认答案不适用。 假设您有一个类似以下内容的大型数据库:Php 带([])的Laravel仅选择关系的某些列,php,laravel,eloquent,Php,Laravel,Eloquent,编辑 这个问题是独特的,因为它提出了独特的问题,例如: 组件内部的关系。项目、产品、库存管理。 大量组件,这会导致链接问题的公认答案不适用。 假设您有一个类似以下内容的大型数据库: $order = Order::with([ 'company', 'complaints', 'person', 'items', 'items.product', 'items.product.stockManagem
$order = Order::with([
'company',
'complaints',
'person',
'items',
'items.product',
'items.product.stockManagement',
'status',
])->findOrFail($id);
然后,我如何选择它们之间的所有关系,而不是其中某些关系的特定列
$order = Order::with([
'company', // select only id,name, size
'complaints', // select only id, name , body
'person',
'items',
'items.product', // select only id, name , price
'items.product.stockManagement',
'status', // select only id
'items.product.media',
'items.product.mainProduct',
'items.product.mainProduct.media'
])->findOrFail($id);
像这样:
$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允许您指定要检索关系的哪些列:
注:
使用此功能时,应始终在要检索的列列表中包含id列和任何相关外键列
像这样:
$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允许您指定要检索关系的哪些列:
注:
使用此功能时,应始终在要检索的列列表中包含id列和任何相关外键列
您还可以为一些更高级的关系查询提供回调
Order::with([
'company' => function ($q) {
$q->select('id', 'name');
}
])
您还可以为一些更高级的关系查询提供回调
Order::with([
'company' => function ($q) {
$q->select('id', 'name');
}
])
我也面临同样的问题。您需要指定外部id而不是id主键 例如:
Data::with('other:id,name')->get();
如果您自定义外来名称,它将不起作用。
因此,您需要完全添加外部列名
那就行了 我也面临同样的问题。您需要指定外部id而不是id主键 例如:
Data::with('other:id,name')->get();
如果您自定义外来名称,它将不起作用。
因此,您需要完全添加外部列名
那就行了 这回答了你的问题吗?可能这是一个重复的问题,但另一个问题有很多没有帮助的答案,但也许那篇帖子也会有帮助。@DouwedeHaan谢谢你,你链接的问题似乎在问同样的问题,但这里投票最多的awnser给出了一个明确而准确的awnser,与其他问题上投票最多的评论不同,这是否回答了您的问题?可能这是一个重复的问题,但另一个问题有很多没有帮助的答案,但也许那篇帖子也会有帮助。@DouwedeHaan谢谢你,你链接的问题似乎在问同样的问题,但这里投票最多的awnser给出了一个明确而准确的awnser,与其他问题上投票最多的评论不同,请描述您的答案。@unclexo更好?是的。非常感谢你!请描述你的答案。@unclexo更好吗?是的。非常感谢你!