2017-03-15 1 views
1

投稿で特定のユーザーの(JSON)文字列を返そうとしています。ただし、PostモデルにはAPI実装の対象外のいくつかの列が含まれており、これらの列を結果から除外したい。Laravel Eloquent - 結果を返すときにフィルタが無視されます

Postsリレーションで次のような列が返されないのはなぜですか? 投稿モデルで特定の列を取得する方法を複数試しました。

$q->get() 

をダンプ

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

return $result; 

しかし返さ$結果は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

私はあなたの 'どこが'のようにうまくいくかを知りませんでした。複数の穂を持つ。更新された答えを参照してください – Gravy

+0

あなたの選択に 'user_id'カラムを追加しましたか? – Gravy