如何获得两个 hasManyThrough 的组合查询

Posted

技术标签:

【中文标题】如何获得两个 hasManyThrough 的组合查询【英文标题】:How can I get the combined query for two hasManyThrough 【发布时间】:2021-04-07 00:11:20 【问题描述】:

我在用户表上有两个关系:

public function tokens_records()

  return $this->hasManyThrough(Record::class, Token::class);

public function websites_records()

  return $this->hasManyThrough(Record::class, Website::class);

如何将两个查询合并为一个?

【问题讨论】:

【参考方案1】:

如果你想拥有这两种关系的记录,这会起作用:

class Entity extends Model

    public function tokens_records()
    
        return $this->hasManyThrough(Record::class, Token::class);
    

    public function websites_records()
    
        return $this->hasManyThrough(Record::class, Website::class);
    


$records = $entity->tokens_records
    ->merge($entity->websites_records);

【讨论】:

不幸的是,这会在返回结果之前加载数据。我正在寻找一种返回关系实例的方法

以上是关于如何获得两个 hasManyThrough 的组合查询的主要内容,如果未能解决你的问题,请参考以下文章

如何使用命令提示符组合两个命令以获得一个输出

Laravel:如何平均嵌套 hasMany 关系(hasManyThrough)

如何在php/codeigniter或mysql中获得两个相差20分钟的日期的所有组合

如何通过中间表访问用户数据(hasOneThrough / hasManyThrough)

如何在同一个表上组合两个查询以在 MySQL 中获得单个结果集

如何从 hasManyThrough 雄辩关系返回 Laravel 中的单个模型