Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 带([])的Laravel仅选择关系的某些列_Php_Laravel_Eloquent - Fatal编程技术网

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更好吗?是的。非常感谢你!