Laravel Eloquent - 属于许多通过
Posted
技术标签:
【中文标题】Laravel Eloquent - 属于许多通过【英文标题】:Laravel Eloquent - belongs to many through 【发布时间】:2014-07-19 14:08:55 【问题描述】:我有网站、页面、元素和 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');
是否有一种简单的方法可以检索特定网站的所有元素创建者(通过其页面)?
谢谢!
【问题讨论】:
这段代码有问题:要么不是belongsToMany
关系页面->创建者(而是 hasManyThrough),要么这些表的架构与您编写的不同。有可能的解决方案取决于此。
【参考方案1】:
目前,我将其用作临时解决方案,希望能找到更好的解决方案:
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);
【讨论】:
【参考方案2】:你可以试试这个:
$site = Site::with('pages.elementCreators')->find(1); // 1 is id for example
然后你可以使用这个访问所有elementCreators
:
$elementCreators = $site->pages->fetch('elementCreators');
【讨论】:
它有效。但是,目前还有其他更简单的方法吗?以上是关于Laravel Eloquent - 属于许多通过的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5 / Eloquent - 对属于多的关系进行查询过滤
如何将许多语句 mysql 转换为 laravel eloquent?
Laravel eloquent count 属于某一特定事件部门的参与者总数
如何在 Laravel 中使用 eloquent 执行多表选择