【问题标题】:Laravel 9 relations with subqueryLaravel 9 与子查询的关系
【发布时间】:2022-12-03 07:31:27
【问题描述】:

我正在开发一款教育游戏,基本上是这样的:

重要提示:我需要一个使用多种语言的问题。 也就是说,一场比赛会有很多问题。每个问题都会有多种语言。

楷模: 游戏,游戏问题,问题组,问题,语言

关系:

游戏:

public function game_questions()
{
    return $this->hasMany(GameQuestion::class);
}

游戏问题:

public function question_groups()
{
   return $this->belongsToMany(QuestionGroup::class, 'questions','question_group_id');
}

问题组:

public function questions()
{
   return $this->hasMany(Question::class);
}

问题:

public function language()
{
  return $this->belongsTo(Language::class);
}

语:

public function questions()
{
   return $this->hasMany(Question::class);
}

如何通过搜索检索添加到游戏中的问题集(多种语言)?

$games = Game::where('user_id', $user_id)->orderBy('created_at', 'DESC')->with('game_question_question_group')->get();

我已经尝试过一些咨询,但我没有任何运气。感谢您的帮助。

【问题讨论】:

  • 我不太确定,但查看提供的 ERD。我认为您应该将 game_questions 变成 game_question 作为 gamesquestions 之间的支点 这样游戏就可以有很多问题,反之亦然。虽然问题仍然属于问题组

标签: laravel subquery relationship laravel-9


【解决方案1】:

您需要使用嵌套关系:

$games = Game::where('user_id', $user_id)->with('game_questions.question_groups.questions')->orderBy('created_at', 'DESC')->get();

在这里阅读更多相关信息https://laravel.com/docs/9.x/eloquent-relationships#nested-eager-loading

但老实说,数据库可以设计得更好

【讨论】:

    猜你喜欢
    • 2020-03-16
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 2018-12-09
    • 1970-01-01
    相关资源
    最近更新 更多