2015-01-09 41 views
0

我有一個模型,用戶定義如下:?返回Laravel模型時,如何在使用()時限制列?

<?php 
class User extends Eloquent { 

public function roles() { 
    return $this->belongsToMany('Role'); 
} 

如何編寫一個查詢將從User只獲取特定的領域,從每個Role所有字段一起¨我不想使用hidden屬性User模型,因爲在不同情況下,我需要不同的字段子集。

這個工作,當然,返回從User各個領域:

$user = User::with('roles')->findOrFail($id); 

這正確限制了User領域,但沒有返回的roles - 只是一個空數組

$user = User::with('roles')->select(['name','email'])->findOrFail($id); 

任何企圖在select中輸入roles字段給出錯誤。

回答

1

你必須這樣做在急切的加載。

$user = User::with(array('roles' => function($q) 
    { 
     $q->select('field1'); 

    }))->select(['name','email'])->findOrFail($id); 
+0

謝謝,接受這個答案,因爲提到急切的加載幫助我找到更多的Laravel文檔。 – Runcible

4

試試這個代碼:

$with = array('roles' => array('id', 'name')); 
$user = User::with($with); 

看看是否能幫助。

相關問題