Laravel Eloquent - 属于许多人

时间:2014-05-29 22:23:32

标签: php orm laravel eloquent relationships

我有网站,页面,元素和element_creators表,如下所示:

   sites
     id
     ...
   pages
     id
     site_id
     ...
   elements
     id
     page_id
     ...
   element_creators
     id
     element_id
     ...

我能够检索链接到页面的元素创建者

    $this->belongsToMany('ElementCreator', 'elements', 'page_id', 'element_creator_id');

是否有一种简单的方法可以检索特定网站的所有元素创建者(通过其网页)?

谢谢!

2 个答案:

答案 0 :(得分:1)

你可以试试这个:

$site = Site::with('pages.elementCreators')->find(1); // 1 is id for example

然后您可以使用以下方式访问所有elementCreators

$elementCreators = $site->pages->fetch('elementCreators');

答案 1 :(得分:0)

目前,我正在使用它作为临时解决方案,我希望能找到更好的东西:

    public function elementCreators()
    {
        $elementCreators = array();
            foreach ($this->pages as $page) {
                foreach ($page->elementCreators as $elementCreator) {
                    $elementCreators[$elementCreator->id] = $elementCreator;
                }
            }
        return \Illuminate\Database\Eloquent\Collection::make($elementCreators);
    }