繁体   English   中英

雄辩的ORM多重关系

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM