2016-09-07 3 views
1

Ich habe folgende Arbeiten für Laravel PaginierenLaravel mit Limit beitreten

$query = DB::table('clients') 
      ->leftJoin('radusergroup', 'clients.username', '=', 'radusergroup.username') 
      ->leftJoin('recharge', 'clients.username', '=', 'recharge.soldto'); 

I radusergroup und laden einige Werte aus zwei Tabellen beitreten möchten. radusergroup gibt immer eine Zeile zurück, da nur eine Zeile gespeichert ist, während die Auflade-Tabelle mehrere Zeilen zurückgibt. Ich möchte nur eine Zeile von Nachlade-Tabelle zurückgegeben, die neueste Eingabe ist.

Im Moment gibt es alle möglichen Zeilen von der Tabelle wieder aufladen und zeigt es auf paginierte Ansicht.

+0

Versuchen Sie dieses Beispiel: http://stackoverflow.com/questions/28849719/sql-select-join-with-a-limit-in-laravel-php –

Antwort

1

Dies ist Laravel Official documentation

DB::table('clinets') 
    ->leftJoin('radusergroup', 'clients.username', '=', 'radusergroup.username') 
    ->leftJoin('recharge', function ($leftJoin) { 
     $leftJoin->on('clients.username', '=', 'recharge.soldto') 
      ->where('recahrge.create_date', '=', DB::raw("(select max(`create_date`) from recahrge)")); 
    }) 
    ->get(); 

diesem Fall, wenn Sie create_date Spalte in der Tabelle haben, wenn Sie es havent ich empfehlen, diese Spalte zu erstellen.

+0

Ich habe bereits Datum Spalte namens "salesdate" in Wiederaufladung Tabelle. Wenn Sie jedoch Ihre Abfrage ausführen, wird der folgende Fehler zurückgegeben. Syntaxfehler oder Zugriffsverletzung: 1064 Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Server-Version entspricht, um die richtige Syntax in der Nähe von 'Select max ('salesdate') vom Aufladen zu verwenden)?' in Zeile 1 (SQL: Wählen Sie * aus 'clients' links verbinden Sie' radusergroup' auf 'clients'.' username' = 'radusergroup'' username' left join 'aufladen' auf' clients'. 'username' =' aufladen' . 'soldto' und' aufladen'.salesdate' (wählen Sie max ('salesdate') aus der Aufladung)) –

+0

Jetzt arbeiten. Es fehlte '=' in -> where ('recahrge.create_date', DB :: raw ("(max (' create_date') von recarge auswählen) ")); –

+0

ok)) Ich werde es jetzt bearbeiten –