我有以下查詢我想執行Eloquent
。Laravel限制(不全球)
$restaurant = Restaurant::with([
'user' => function($query)
{
$query->select(['username']); // This doesn't work
$query->whereStatus('confirmed');
}
])->find($id);
我想要提取Restaurant
和它對應User
(它們是相關的),但是從User
我不wan't的所有信息。在這種情況下只有username
。
我可以爲User
模型添加屬性$hidden
,但對於每個查詢(以array/json形式),它們都將隱藏。但我只想限制一下這個查詢。
如果我添加的選擇(帶或不帶陣列中的包裝吧)我得到以下結果:
{
'id': 1,
'user': null
}
然而,如果我刪除選擇,我得到了充分User
:
{
'id': 1,
'user': { .. json user data }
}
User
確實存在,並且username
不爲空。我怎麼去解決這個問題?
這裏可以找到actual輸出。
編輯:當我將select中的值更改爲數據庫中不存在的內容時,我看到一個錯誤,並從中推斷出Query是正確的,但我沒有得到任何輸出。 (使用無效列「測試」時得到的查詢)。
select `test` from `users` where `users`.`deleted_at` is null and `users`.`userable_id` in (1) and `users`.`userable_type` = Restaurant and `status` = confirmed)
**關係的主鍵和外鍵**:再一次:http://stackoverflow.com/questions/25906790/getting-specific-columns-with-eager-loading-laravel-4/25907624#25907624 - upvote和玩得開心。 – 2014-10-28 18:36:02