在 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]);
}
}