ich folgende einfache Abfrage, um zu versuchen die letzte aktualisierte Zeile pro module
zu erhalten:Bestellung per updated_at pro Gruppe
$distincts = SerialNumber::where('company_id', Auth::user()->active_company_id)
->groupBy('module')
->orderBy('updated_at', 'desc')
->get();
Das ist nicht so, wie ich es will nicht funktioniert. Jede Zeile in der module
Gruppe wird nicht von updated_at
(das ist ein Datumsstempel) bestellt.
Wie kann ich orderBy
für jede Zeile in einer Gruppe verwenden? Danke fürs Lesen!
Die folgenden Werke, sondern ist eine sehr schlechte Lösung:
$distincts = array();
$modules = SerialNumber::select('module')
->where('company_id', Auth::user()->active_company_id)
->groupBy('module')
->pluck('module');
foreach ($modules as $mod) {
$se = SerialNumber::where('company_id', Auth::user()->active_company_id)
->where('module', $mod)
->orderBy('updated_at', 'desc')
->first();
$distincts[] = $se;
}
SQL-Fehler: SQLSTATE [42000]: 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 für 'select * aus 'serial_numbers' nach' updated_at' desc aus 'serial_numbers' in Zeile 1 zu verwenden (SQL: wählen Sie * aus' serial_numbers' aus 'update_at' desc von' serial_numbers' wobei 'company_id' = 1 group by' module') –
Nach einigen weiteren Tests scheint diese Abfrage nicht zu funktionieren. Zum Beispiel hat in einem 'contact_report'-Modul meine letzte Zeile 'updated_at' eine 'index_number' von 20. Die Abfrage gibt 16 zurück, aber ich verstehe nicht warum. Hier ist ein Dump aller Ergebnisse: http://hastebin.com/lasazejuxe.coffee –
in diesem speziellen Beispiel scheint es, dass Sie hinzufügen müssen: '-> groupBy ('Modul', 'index_number'), weil es ausgeblendet wurde while; e Gruppierung und war thikin zuerst. Versuch es. –