【发布时间】:2015-06-12 16:06:55
【问题描述】:
我在从 Laravel 的关系中检索列的值时遇到问题。
我有一个用户模型。该模型与表格有关。一个名为 Userhobbies 的模型。
现在我们有:User ::: hasMany >>> Userhobbies
现在有了 User::all()->load('hobbies')
,我得到了正确的结果,例如
{"id":"1","username":"jdoe","first_name":"Joe","last_name":"Doe","birth":"
1992-04-11","picture_id":"f3dca65323e876026b409b9ba3d49c56","hobbies":
[{"hobby_id":"1","user_id":"1"},{"hobby_id":"2","user_id":"1"},
{"hobby_id":"3","user_id":"1"},{"hobby_id":"4","user_id":"1"}]}
如您所见,Userhobbies 仅包含 hobby - table (Hobby Model) 和 user - table (User Model) 之间的主键关系。
(爱好模型也与用户爱好有 hasMany 关系)
我现在的问题是 - 如何在我的呼叫中(在 load('hobbies') 之后)检索所有爱好名称(来自爱好 - 表),是否可以不编写大量代码?
为了更好地理解我的想法,我想要检索的结果:
{"id":"1","username":"jdoe","first_name":"Joe","last_name":"Doe","birth":"
1992-04-11","picture_id":"f3dca65323e876026b409b9ba3d49c56","hobbies":
["golf", "cards", "games", "football"]}
编辑:
如果我尝试以下操作(我尝试在用户和爱好中使用 belongsToMany):
User::with('hobbies')->get()->first()
我从爱好中获得了全部价值 - 表:
{user-specific data ...
hobbies:[{"id":"1","name":"golf","created_at":"2015-04-07
14:15:02","updated_at":"2015-04-07 14:15:02","pivot":
{"user_id":"1","hobby_id":"1"}},
{"id":"2","name":"cards","created_at":"2015-04-07
14:15:02","updated_at":"2015-04-07 14:15:02","pivot":
{"user_id":"1","hobby_id":"2"}},
{"id":"3","name":"games","created_at":"2015-04-07
14:15:02","updated_at":"2015-04-07 14:15:02","pivot":
{"user_id":"1","hobby_id":"3"}},
{"id":"4","name":"football","created_at":"2015-04-07
14:15:02","updated_at":"2015-04-07 14:15:02","pivot":
{"user_id":"1","hobby_id":"4"}}]}
同样尝试->load('hobbies')。我真的不知道怎么继续下去。
为了更详细地解释我需要什么,可以想象这样的查询:
User::all(['id', 'name'])->load(array('hobbies.id','hobbies.name'))->get();
【问题讨论】:
标签: database laravel foreign-keys eloquent relationship