Okay nach Stunden der Forschung und immer noch mit DB :: select Ich muss diese Frage stellen. Weil ich gerade meinen Computer weglege;).Laravel Fluent Query Builder Join mit Unterabfrage
Ich möchte die letzte Eingabe eines Benutzers erhalten (basierend auf dem Zeitstempel). Ich kann dies tun mit dem rohen SQL
SELECT c.*, p.*
FROM users c INNER JOIN
(
SELECT user_id,
MAX(created_at) MaxDate
FROM `catch-text`
GROUP BY user_id
) MaxDates ON c.id = MaxDates.user_id INNER JOIN
`catch-text` p ON MaxDates.user_id = p.user_id
AND MaxDates.MaxDate = p.created_at
ich diese Abfrage aus einem anderen Beitrag here auf Stackoverflow bekam.
Ich habe alles versucht, dies mit dem fließenden Abfrage-Generator in Laravel jedoch ohne Erfolg zu tun.
Ich weiß, das Handbuch sagt, dies zu tun:
DB::table('users')
->join('contacts', function($join)
{
$join->on('users.id', '=', 'contacts.user_id')->orOn(...);
})
->get();
Aber das hilft nicht viel, weil ich sehe nicht, wie ich da eine Unterabfrage verwenden könnte? Wer kann meinen Tag erhellen?
Dieses Paket soll um einen PHP-Werkzeugsatz zum Erstellen von Abfragen bereitzustellen, müssen wir jedoch die Abfrage aufschreiben und sie mit 'selectRaw'-Anweisung injizieren! Hatten Sie ein Glück, ein fließendes Abfrage-Objekt anstelle der Abfrage-Zeichenfolge an die Abfrage zu übergeben? – HPM
Dies wird unmöglich, wenn Sie einen Parameter im subselect haben - siehe @ ph4r05 Antwort, aber ich bin mir nicht sicher, ob es vereinfacht werden könnte, um diese hässlichen toSql und addBinding zu vermeiden – JustAMartin