2017-03-15 33 views
1

我試圖用他/她的帖子返回特定用戶的(JSON)字符串。然而,Post模型包含幾個對API實現不感興趣的列,我想從結果中排除這些列。Laravel Eloquent - 返回結果時忽略過濾器

爲什麼在郵件關係中仍然沒有返回任何列 我試過在Post模型上檢索特定列的多種方式。

$result = User::with([ 
    'posts' => function($q) { 
     $q->addSelect('title', 'tag'); 
    }]) 
    ->where(['api' => 1, 'id' => $id]) 
    ->first(['id', 'username', 'role']); 

return $result; 

傾銷

$q->get() 

顯示正是我想要的,但是返回$結果沒有包括在Post模型列。

我Laravel的版本是5.2

回答

0

嘗試改變addSelect只是select

$result = User::with([ 
    'posts' => function($q) { 
     $q->select(['title', 'tag', 'user_id']); // You might have to also include `user_id` here 
    }]) 
    // ->where(['api' => 1, 'id' => $id]) change this 
    ->where('api', 1) 
    ->where('id', $id) 
    ->first(); 

return $result; 

因爲addSelect是將項目添加到現有的選擇,而不是指定你真正想要的是什麼選擇。

+0

感謝您的回覆。我實際上已經嘗試過這一點,並且響應也是一樣的。另外我編輯了我的問題(輸出實際上是空的) –

+0

我也不知道你的'哪裏可以這樣工作......我以爲你必須有多個wheres。請參閱已更新的答案 – Gravy

+0

您是否已將「user_id」列添加到您的選擇中? – Gravy