Laravel - 通过两个数据透视表检索集合
Laravel - Retrieve collections through two pivot tables
我目前在 Laravel 5.6 中遇到以下问题,假设我有以下数据库表:
- 网站(例如 ID|名称)
- Website_providers(例如 id|website_id|provider_id)
- Provider_posts(例如 id|provider_id|post_id|post_name)
- 帖子(例如 id|name)
我正在寻找一种基于网站 ID 检索帖子的好方法。一个网站可以分配多个提供者(通过 website_providers),并且提供者可以分配多个帖子(他们也可以提供自定义 post_name,这应该推翻标准 posts.name)。
在 Laravel 中实现此目标的最佳方法是什么?我已经尝试过通过关系来做到这一点,但无法让它顺利进行。我还尝试使用很长的连接查询来加载帖子,但感觉不对,必须有一种更简单、更漂亮的方法。
提前致谢!
本案例没有原生关系。
我创建了 HasManyThrough
关系并支持 BelongsToMany
:Repository on GitHub
安装后可以这样使用:
class Website extends Model {
use \Staudenmeir\EloquentHasManyDeep\HasRelationships;
public function posts() {
return $this->hasManyDeep(
Post::class,
['website_providers', Provider::class, 'provider_posts']
)->withPivot('provider_posts', ['post_name']);
}
}
我目前在 Laravel 5.6 中遇到以下问题,假设我有以下数据库表:
- 网站(例如 ID|名称)
- Website_providers(例如 id|website_id|provider_id)
- Provider_posts(例如 id|provider_id|post_id|post_name)
- 帖子(例如 id|name)
我正在寻找一种基于网站 ID 检索帖子的好方法。一个网站可以分配多个提供者(通过 website_providers),并且提供者可以分配多个帖子(他们也可以提供自定义 post_name,这应该推翻标准 posts.name)。
在 Laravel 中实现此目标的最佳方法是什么?我已经尝试过通过关系来做到这一点,但无法让它顺利进行。我还尝试使用很长的连接查询来加载帖子,但感觉不对,必须有一种更简单、更漂亮的方法。
提前致谢!
本案例没有原生关系。
我创建了 HasManyThrough
关系并支持 BelongsToMany
:Repository on GitHub
安装后可以这样使用:
class Website extends Model {
use \Staudenmeir\EloquentHasManyDeep\HasRelationships;
public function posts() {
return $this->hasManyDeep(
Post::class,
['website_providers', Provider::class, 'provider_posts']
)->withPivot('provider_posts', ['post_name']);
}
}