2017-03-03 40 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