Be part of JetBrains PHPverse 2026 on June 9 – a free online event bringing PHP devs worldwide together.

behnampmdg3's avatar

Is this the correct way of rewriting this query in Eloquant?

Is this the correct way of rewriting this query in Eloquant?

SELECT name, email FROM members 
    INNER JOIN member_course 
        ON  members.id = member_course.member_id
    INNER JOIN courses 
        ON courses.id = member_course.course_id
            AND courses.user_id = 3
    GROUP BY members.id    
public function index()
    {
        $members = \DB::table('members')
        ->join('member_course', 'members.id', '=', 'member_course.member_id')
        ->join('courses', 'courses.id', '=', 'member_course.course_id')->where('courses.user_id', '=', auth()->id())
        ->select('name', 'email')
        ->groupBy('members.id')
        ->get();
        return view('members.show', ['members' => $members]);    
    }
0 likes
3 replies
jlrdw's avatar

See my last answer here https://laracasts.com/discuss/channels/laravel/how-to-find-only-last-row-from-second-table-along-with-its-first-table-row?page=1

More than one way, one is starting with select, another starts with query.

Bottom line, it can take some trial and error to build up eloquent queries.

Is this the correct way of rewriting this query in Eloquant?

That's QB you are using, but would be similar in eloquent.

Again, eloquent has QB's methods also built in, joins, group by, etc.

behnampmdg3's avatar

You're not answering my question :)

I know there are many ways to do this.

Is my approach correct?

Please or to participate in this conversation.