在 Laravel 中从单个 hasManyThrough 的多个关系移动

Moving from multiple relationships for a single hasManyThrough in Laravel

我目前有 3 个 类 ElementsPageElementsPage。型号如下:

Pages.php

class Pages extends Model
{

    public function pageElement() {
        return $this->hasMany(PageElements::class, 'page_id');
    }
}

PageElements.php

class PageElements extends Model
{
    public function element() {
        return $this->hasOne(Elements::class, 'id', 'element_id');
    }
}

Elements.php

class Elements extends Model
{
    //
}

我需要的所有数据都来自Elements,我可以把PageElements数据扔掉,我如何将其转换为使用hasManyThrough关系?

我想通过 $page->elements 直接访问 Elements,目前我必须这样做 $page->elements->element

我认为这应该是 hasManyThrough 关系对吗?

我目前的尝试低于

public function elements() {
    return $this->hasManyThrough(Elements::class, PageElements::class, 'element_id', 'id', 'id', 'page_id');
}

虽然总是returns一个空数据集

看来我确实像 Jonas 提到的那样把钥匙搞混了,只是顺序不对。我的关系是根据错误的 ID 配对的。以下是正确的

public function elements() {
    return $this->hasManyThrough(Elements::class, PageElements::class, 'page_id', 'id', 'id', 'element_id');
}