我正在尝试从与我目前使用的模型没有直接关系的表中检索数据。
我的数据结构:
表:帖子
表: post_stacks
表:堆叠
我雄辩的模型来自Post.php(posts表),我正在尝试获取与我的帖子相关的所有堆栈(来自堆栈表)。我想仅在Post.php而不是我的数据透视表(post_stacks)上声明我的关系。我尝试使用hasManyThrough,但我无法让它工作?
public function img()
{
return $this->hasManyThrough(\App\Stack::class, \App\PostStack::class, 'post_id', 'stack_id', 'id');
}
有人知道如何检索我想要的数据吗?谢谢!
答案 0 :(得分:2)
您是否可以尝试在帖子模型上添加以下关系。
public function stacks()
{
return $this->hasManyThrough(
'App\Stacks', 'App\PostStacks',
'post_id', 'id', 'id'
);
}
另请看一下https://laravel.com/docs/5.4/eloquent-relationships#has-many-through
根据此文档,hasManyThrough
中的第三个参数是中间模型上的外键名称。在我们的案例中,'post_id'
是post_stack
上与posts
有直接关系的外键。
第四个参数是最终模型上的外键名称。即'id'
上的stacks
。与post_stacks
( 'post_id' )
有关系。第五个参数是本地密钥。即id
个帖子