[英]Eloquent ORM multiple relationships
有三个表。
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)
行中Relationship method must return an object of type Illuminate\\Database\\Eloquent\\Relations\\Relation
。
我做错了什么? 先感谢您。
在您的以下功能中:
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);
这将减少查询。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.