当前位置: 首页 > 面试题库 >

Laravel合并关系

刘辰钊
2023-03-14
问题内容

有没有办法在laravel中合并2个关系?

这是现在设置的方式,但是有没有办法我可以将两者合并?

  public function CompetitionsHome() {
    return $this->HasMany( 'Competition', 'home_team_id' );
  }
  public function CompetitionsGuest() {
    return $this->HasMany( 'Competition', 'guest_team_id' );
  }
  public function Competitions() {
    // return both CompetitionsHome & CompetitionsGuest
  }

问题答案:

试用属性的getter方法,该方法返回从关系返回的合并集合。

public function getCompetitionsAttribute($value)
{
    // There two calls return collections
    // as defined in relations.
    $competitionsHome = $this->competitionsHome;
    $competitionsGuest = $this->competitionsGuest;

    // Merge collections and return single collection.
    return $competitionsHome->merge($competitionsGuest);
}

或者,您可以在返回集合之前调用其他方法以获取不同的结果集。

public function getCompetitionsAttribute($value)
{
    // There two calls return collections
    // as defined in relations.
    // `latest()` method is shorthand for `orderBy('created_at', 'desc')`
    // method call.
    $competitionsHome = $this->competitionsHome()->latest()->get();
    $competitionsGuest = $this->competitionsGuest()->latest()->get();

    // Merge collections and return single collection.
    return $competitionsHome->merge($competitionsGuest);
}


 类似资料:
  • 我最近将Laravel网站移动到具有相同设置的不同服务器(php、Mariadb等版本略有不同),并遇到了一个有趣的问题。 我正在使用包Team Tea Time/laravel forum(以前的riari/laravel forum)来提供留言板功能。在论坛中,每个帖子都有一个链接,可以链接到最新的帖子,在移动之前效果很好。在移动之后,这些链接将指向最旧/第一篇帖子。 该功能是线程模型的一部分

  • 问题内容: 我在Laravel 5中使用Eloquent编写了此代码,该代码运行良好: 基本上,目标是仅让那些过滤了提交内容的用户拥有其中的任何一个。但是,似乎浪费了在 whereHas 和 带有 相同回调函数的方法上运行的时间。有没有一种方法可以简化它? 谢谢。 问题答案: 在性能方面,您实际上无法在此进行任何优化(除非您要从雄辩的关系转向联接)。有或没有,将运行两个查询。一个选择所有用户,另一

  • 我有3个模型和一个透视表: 学校年-模型 ID 课程模式 ID schoolyear_id 课程\学生-数据透视表 课程号 学生证 学生模型 ID 关系是: 一学年有许多课程 一门属于任何学生的课程 在任何课程中的学生 什么是最快、更优雅的方法来找到学生进入一个学年,并且能够按学生属性进行排序?

  • 问题内容: 我在laravel中很难建立起非常嵌套的关系。 所需的行为如下, 我通过ID选择一个事件,我想查看哪些人已订阅该事件。 现在的问题是事件和人员之间有一些表格。 这是有效的查询! 事件模型 城市模型 公司模式 人物模型 我尝试过的 和 还有很多其他可能性,我真的很坚持。在laravel中实现这种嵌套关系链接如此困难吗? 谢谢! 问题答案: 如果只想从表中选择某些字段,请使用以下命令:

  • 我试图编写一个查询,它从模型中选择列,然后从关系表中选择一列。 如何从此查询中的关系表中获取列?

  • 我有一个问题,我无法用文档解决。 我想在两个用户之间创建一个非常简单的对话系统。 我有3个模型和表: 用户id、名称 会话 id 消息 id,user_id,conversation_id,内容 因此,一条消息属于一个用户和一个对话,但我希望对话属于多个用户。 我不知道怎么用桌子做这个。如果我在对话表中创建一个字段,我不能有多个用户。。。