有三张桌子。
users:
- ...
- some_param
admins:
- ...
- club_id
- some_param
clubs:
- id
- title
每个用户可以有多个管理员(some_param相关),每个管理员可以有多个俱乐部,我想获得每个俱乐部的头衔。
所以我定义了一个关系:
class User extends Eloquent {
public function admins() {
return $this->hasMany('Admin', 'some_param', 'some_param');
}
}
class Admin extends Eloquent {
public function clubs() {
$this->hasMany('Club', 'id', 'club_id');
}
}
并希望在模板中使用它:
@foreach($user->admins as $admin)
@foreach($admin->clubs as $club)
{{ $club->title }}
@endforeach
@endforeach
但是我在第Relationship method must return an object of type Illuminate\Database\Eloquent\Relations\Relation
行收到错误:@foreach($admin->clubs as $club)
。
我做错了什么?提前谢谢。
答案 0 :(得分:0)
在您的以下功能中:
public function clubs() {
$this->hasMany('Club', 'id', 'club_id');
}
您没有return
所以请像这样使用return
:
public function clubs() {
return $this->hasMany('Club', 'id', 'club_id');
}
此外,在User
变量中收集$user
集合时,请尝试使用eager loading,例如:
$user = User::with('admins.clubs')->find(1);
这会减少查询。