如何使用 laravel 5.3 与 4 张表建立"has many through"关系



在 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 StaudenmeirEloquentHasManyDeepHasRelationships;
    public function comments() {
        return $this->hasManyDeep(Comment::class, [User::class, Post::class]);
    }
}

最新更新