2017-02-09 7 views
0

どのようにしてmysqlクエリをlaravelクエリに変換できますか?これは、あなたがよりよい解決策を見つけるまでは、クエリmysqlサブクエリをLaravelに変換する

SELECT 
    users.first_name, 
    users.id AS uid, 
    (
    SELECT 
    COUNT(vpl_submissions.accept) 
    FROM 
    vpl_submissions 
    INNER JOIN vpl ON vpl_submissions.vpl = vpl.id 
    WHERE vpl.courseid = 2 
    AND vpl_submissions.accept = 1 
    AND vpl_submissions.userid = uid 
) AS completed 
FROM 
    users 
INNER JOIN course_enroles ON users.id = course_enroles.user_id 
WHERE course_enroles.course_id = 2 
+0

万が一「優雅」を見ましたか? https://laracasts.com/series/laravel-from-scratch-2017/episodes/7 https://laracasts.com/series/laravel-from-scratch-2017/episodes/15 –

答えて

0

のような生のクエリを実行することができます。

DB::table('users') 
     ->join('course_enroles', 'users.id', '=', 'course_enroles.user_id') 
     ->where("course_enroles.course_id", "=", 2) 
     ->select(users.first_name,users.id AS uid, 
      DB::raw("(SELECT COUNT(vpl_submissions.accept) FROM 
        vpl_submissions INNER JOIN vpl ON vpl_submissions.vpl = vpl.id 
        WHERE vpl.courseid = 2 
          AND vpl_submissions.accept = 1 
          AND vpl_submissions.userid = uid) as completed") 
      ) 
     ->get(); 

これが役に立ちます。

+0

ありがとうございました。 –

+0

@Nijesh Wあなたが私の答えで満足するなら、受け入れられたとして私の答えをマークしてください。 – Manish

0

で、あなたはあなたがこれを試すことができます。この

$result = DB::select(DB::raw(" 
    select users.first_name,users.id AS uid, 
    (
     select count(vpl_submissions.accept) 
     FROM vpl_submissions 
     INNER JOIN vpl on vpl_submissions.vpl = vpl.id 
     WHERE vpl.courseid=2 AND vpl_submissions.accept =1 
     AND vpl_submissions.userid = uid 
    ) as completed 
    from users 
    inner join course_enroles on users.id = course_enroles.user_id 
    where course_enroles.course_id = 2 
")); 
関連する問題