我可以针对我的具体情况使用 Laravel 的 eloquent hasManyThrough 关系吗?

Can I use Laravel's eloquent hasManyThrough relationship for my specific case?

我正在尝试从与我当前使用的模型没有直接关系的 table 中检索数据。

我的数据结构:

Table: posts


Table: post_stacks


Table:堆叠


我的 eloquent 模型来自 Post.php (posts table),我正在尝试获取与我的 [=66= 关联的所有堆栈](来自堆栈 table)。我只想在 Post.php 而不是我的枢轴 table (post_stacks) 上声明我的关系。我尝试使用 hasManyThrough 但我无法让它工作?

public function img()
    {
        return $this->hasManyThrough(\App\Stack::class, \App\PostStack::class, 'post_id', 'stack_id', 'id');
    }

有人知道我怎样才能检索到我想要的数据吗?谢谢!

你能尝试在你的帖子模型中添加以下关系吗?

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 个帖子