繁体   English   中英

如何使用laravel 5.3与4个表创建“有很多通过”关系

[英]How to create a "has many through" relationship with 4 tables with laravel 5.3

在 Laravel 中,您可以使用 3 个表创建“有很多通过”的关系。

我想知道是否可以用 4 个表创建这样的关系,如果是,如何?

由于这个问题,我知道如何使用 sql 语法来做到这一点,但我想首先使用 laravel 标准解决方案。

谢谢你的帮助。

例子

4 个表:国家、用户、帖子、评论

countries
    id - integer
    name - string

users
    id - integer
    country_id - integer
    name - string

posts
    id - integer
    user_id - integer
    title - string

comments
    id - integer
    post_id - integer
    title - string
    body - string

我想做以下事情,列出一个国家的所有评论。

$country = Country::first();
$country->comments;

与 4 个表没有 hasManyThrough 关系。 但是,您可以使用嵌套急切加载

$country = Country::with('users.posts.comments')->first();

我创建了一个具有无限级别的HasManyThrough关系: GitHub 上的存储库

安装后,您可以像这样使用它:

class Country extends Model {
    use \Staudenmeir\EloquentHasManyDeep\HasRelationships;

    public function comments() {
        return $this->hasManyDeep(Comment::class, [User::class, Post::class]);
    }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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