Es aufgrund von Änderungen in MySQL scheint 5.7 oder höher ist, wird der SQL-Modus ONLY_FULL_GROUP_BY standardmäßig so guten alten Code aktivieren, damit hatte ich die wie folgt aussah:Wie erhält man alle eindeutigen Zeilen basierend auf einer bestimmten Spalte?
Table::where('name', 'LIKE', '%'.$search_str.'%')
->groupBy('name')
->get();
jetzt den Fehler wirft ...
SQLSTATE[42000]: Syntax error or access violation: 1055 Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column
Ich habe versucht, meinen Code auf verschiedene Arten zu aktualisieren, um es zum Laufen zu bringen, aber kein Glück.
Das ist, was ich habe zur Zeit:
Table::where('name', 'LIKE', '%'.$search_str.'%')
->selectRaw('name, ANY_VALUE(id), ANY_VALUE(col_a), ANY_VALUE(col_b), ANY_VALUE(col_c), ANY_VALUE(col_d)')
->groupBy('name')
->get();
Diese werfen keine Fehler, aber die Spaltendaten fehlt.
habe ich auch versucht:
Table::where('name', 'LIKE', '%'.$search_str.'%')
->groupBy('name')
->groupBy('id')
->get();
Welche nicht zurück unterschiedlichen Zeilen basierend auf 'name'. Es gibt einfach alles zurück.
Wie kann ich dies in Laravel Eloquent oder rohe MySQL tun?
Haben Sie versucht '-> distinct() -> get();' – EddyTheDove
Ich habe auch in distinct() untersucht. Es gibt nur eine Zeile zurück. Ich versuche mehrere Zeilen zu bekommen. – rotaercz