Php 检索Laravel中所有变形ByMany关系

Php 检索Laravel中所有变形ByMany关系,php,laravel,eloquent,polymorphism,Php,Laravel,Eloquent,Polymorphism,在Laravel文档中,有以下示例用于检索多对多多态关系 我如何在一个查询/集合中获得所有变形的关系的列表,例如,posts和videos,然后如果我后来添加了照片(或任何东西),那么也可以这样做?您应该能够在标记类中添加关系 public function taggable() { return $this->morphedTo(); } 这将使用taggable_id和taggable_类型来获取它所绑定的相关模型。您是否想过使用集合的“联合”功能来合并所有不同的集合,以便

在Laravel文档中,有以下示例用于检索多对多多态关系


我如何在一个查询/集合中获得所有变形的关系的列表,例如,
posts
videos
,然后如果我后来添加了
照片
(或任何东西),那么也可以这样做?

您应该能够在标记类中添加关系

public function taggable()
{
    return $this->morphedTo();
}
这将使用taggable_id和taggable_类型来获取它所绑定的相关模型。

您是否想过使用集合的“联合”功能来合并所有不同的集合,以便检索您需要的所有内容

class标记扩展模型
{
[...]
/**
*把所有的东西都拿出来。
*/
公共函数变形()
{
返回$this->video->union($this->posts)->all();
}
}
我在这里使用了一个技巧:

为连接表
Taggable
创建一个模型
Taggable
,并将
hasMany
关系添加到
Tag
模型

public function related()
{
    return $this->hasMany(Taggable::class);
}
在您的
Taggable
模型中创建一个
morphedTo
关系

public function taggables()
{
    return $this->morphTo();
}
现在,您可以通过调用以下命令获取所有正在使用标签的型号:

$tagged = Tag::with('related.taggables');

这是关于多态关系,我特别要说的是morphedByMany关系,这是一种多对多多态关系。我会更新这个问题,让它更清楚。找到解决方案了吗?我找到了,但我没有代码,这是在一个旧的工作中…我所做的基本上是使用查询生成器获取结果,并用自定义集合类中的数据构建模型。这对我以后添加更多变形元素的实例不起作用,虽然对于获取视频和帖子的特定情况,它会起作用。当您添加新的变形表时,您可以在此函数中添加->联合。当然不是完全自动的,但无论如何,您必须将一些代码行更改为您的模型…这不起作用。例如:我有一个页面模型,不同的模型都与之相连,比如内容和视差。我有一些相关的记录:page | type | id 1 | content | 11 | parallax | 2 1 | content | 3 1 | content | 4*如果我做
$this->content->union($this->parallax)->all()
返回三条记录:1、3、4*如果我执行
$this->parallax->union($this->content)->all()返回三条记录:2、3、4我认为这是解决这个问题的最佳方法。我已经对整个设置做了详细说明,以及如何获取相关项
$tagged = Tag::with('related.taggables');