如何使用laravel查询生成器编写此查询?

czfnxgou  于 2021-06-25  发布在  Mysql
关注(0)|答案(1)|浏览(419)

我是新来拉威尔的。这是我的查询,过滤掉没有任何问题或问题没有任何答案的小测验。但是我不知道如何使用laravel查询生成器正确地编写它。考虑到我用雄辩来建立人际关系,如果我能用拉威尔雄辩得到同样的结果,那就更好了。

SELECT DISTINCT q.id, q.content
FROM m_quiz q
RIGHT JOIN  (SELECT DISTINCT p.quiz_id as id
             FROM  m_problem p
             RIGHT JOIN m_answer_choice a
             ON p.id = a.problem_id) problem
ON q.id = problem.id
ORDER BY q.id;
ssm49v7z

ssm49v7z1#

没有测试,但我想应该是这样的。

DB::table('problems')->selectRaw('m_problem.*, DISTINCT m_problem.quiz_id as id')
    ->join('m_answer_choice', 'm_problem.id', '=', 'm_answer_choice.problem_id')
    ->groupBy('m_problem.id')
    ->get();

但如果你能像这样做就更好了

namespace App;
use Illuminate\Database\Eloquent\Model;

    class Problem extends Model
    {
        /**
         * Get the comments for the blog post.
         */
        public function answerChoices()
        {
            return $this->hasMany('App\AnswerChoices');
        }
    }

做一些类似的事情

$answerChoices= App\Problem::find(1)->answerChoices;

foreach ($answerChoices as $answerChoice) {
    //
}

相关问题