Laravel 5 laravel雄辩的orm-在急切加载查询中限制列?

Laravel 5 laravel雄辩的orm-在急切加载查询中限制列?,laravel-5,eloquent,Laravel 5,Eloquent,我正在尝试对一个表执行一对多到另一个表的急切加载查询 最初,我是这样做的: $node = $this->MapNodes()->where('type_id', $typeId )->with('NodeCounters')->first(); 这是可行的,但问题是关系远侧的表有很多列,这会使结果膨胀。如果我只需要几列,是否有办法限制/指定在关系远端检索的表列?您可以始终对关系进行约束 $node = $this->MapNodes()->wher

我正在尝试对一个表执行一对多到另一个表的急切加载查询

最初,我是这样做的:

    $node = $this->MapNodes()->where('type_id', $typeId )->with('NodeCounters')->first();

这是可行的,但问题是关系远侧的表有很多列,这会使结果膨胀。如果我只需要几列,是否有办法限制/指定在关系远端检索的表列?

您可以始终对关系进行约束

$node = $this->MapNodes()->where('type_id', $typeId )
                         ->with( ['NodeCounters' => function($query){
                                 $query->get(['column-1', 'column-2']);
                         }])
                         ->first();

检查官方。

我猜MapNodes是您的属性方法,在这种情况下,您可以将select子句链接到它,并指定要返回的列的名称啊!您可以在with函数中使用get with columns,就像使用where一样,就像文档显示的那样。美好的谢谢