Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Laravel leftJoin nur letzter Datensatz der rechten Tabelle

Hier haben wir 2 Tabellen Benutzer und Antworten wo Benutzer ist linke Tabelle und Antworten ist eine rechte Tabelle mit Benutzerantworten.

Wir wollten Benutzer beitreten mit Antworten aber die Verknüpfung sollte mit dem neuesten Datensatz oder Antworten erfolgen Tabelle.

$query = Users::select('users.id', 'users.user_name','answers.created_at as last_activity_date')
->leftJoin('answers', function($query) 
{
   $query->on('users.id','=','answers.user_id')
   ->whereRaw('answers.id IN (select MAX(a2.id) from answers as a2 join users as u2 on u2.id = a2.user_id group by u2.id)');
})
->where('users.role_type_id', Users::STUDENT_ROLE_TYPE)->get();