2017-03-03 43 views
0

我正在尝试执行一个有一对多到另一个表的表的加载查询。laravel eloquent orm - 在急切加载查询中限制列?

所以一开始,我这样做:

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

这工作,但问题是在关系的另一边是表中的列了很多,这真的涨大的结果。如果我只需要几列,有没有办法可以限制/指定在关系远端检索的表列?

+0

我猜MapNodes()是你的属性方法在这种情况下,你可以将select()子句链接到它并指定要返回的列的名称 – RohitS

回答

0

你总是可以对你的关系施加限制。

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

检查官方Docs

+0

啊!你可以在with()函数中使用get() - with-columns,就像使用where()一样,就像文档显示一样。太好了!谢谢。 – cardinalPilot