【问题标题】:Moving from multiple relationships for a single hasManyThrough in Laravel从 Laravel 中单个 hasManyThrough 的多个关系转移
【发布时间】:2018-07-03 23:17:33
【问题描述】:

我目前有 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');
    }
}

元素.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');
}

虽然总是返回一个空数据集

【问题讨论】:

    标签: php laravel eloquent relationships


    【解决方案1】:

    看来我确实像 Jonas 提到的那样把钥匙弄混了,但不是按照那个顺序。我的关系是基于错误的身份配对的。以下是正确的

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

    【讨论】:

      猜你喜欢
      • 2019-03-26
      • 2018-07-24
      • 2018-10-18
      • 2023-03-09
      • 1970-01-01
      • 2018-09-25
      • 2014-03-09
      • 2020-10-14
      • 1970-01-01
      相关资源
      最近更新 更多