Ich arbeite mit einer Datentabelle, die ich aus verschiedenen Beziehungen herausgebe.Laravel 4.2 Nach Eloquent-Beziehungsproblemen sortieren
Die meisten Daten stammen aus einer meters
Tabelle, die ein Meter
Modell hat, aber einige davon wird aus anderen Tabellen über Beziehungen gezogen. Zum Beispiel habe ich ein Problem mit der Sortierung nach der calibrations
Tabelle.
Die Datentabelle hat sortierbare Spalten, die gut funktionieren. In den Spalten, die auf anderen Beziehungen basieren, sind die Verknüpfungen vorhanden, sodass sie ohne Abfragefehler sortiert werden.
Alle Sortierung und Verbindungen funktionieren bis auf eine, last_calibration_date
.
Es gibt keine Spalte mit der Bezeichnung last_calibration_date
. In der Tat könnte jeder meter
mehrere Kalibrierungen haben.
Im Meter
Modell packe ich die last_calibration_date
vom calibrations
Tabelle über die calibration_date
Spalte auf diese Weise:
public function getLastCalibrationDateAttribute()
{
if (isset($this->relations['calibrations']) && $this->relations['calibrations']->count())
return $this->relations['calibrations']->sortBy('calibration_date', SORT_REGULAR, true)->first()->calibration_date->format('Y-m-d');
}
Das funktioniert hervorragend, wenn ich nicht von der last_calibration_date
Spalte sortiert wird, sondern gibt einen SQL-Fehler, wenn Sie versuchen, ohne Join danach zu sortieren.
Hier ist mein Versuch an der Verbindung:
if ($sort == 'last_calibration_date')
{
$query->join('calibrations', 'calibrations.meter_id', '=', 'meters.id');
$sort = 'calibrations.calibration_date';
}
Während dies keinen Fehler zurückgibt es auch nicht die tatsächlichen last_calibration_date
zurück.
Nur ein wenig mehr Informationen, die calibrations
Tisch eingerichtet ist, wie so
calibrations
- id
- calibration_date
- next_calibration_date
- meter_id
So, wie bereits gesagt wurde, jeder Meter mehrere Kalibrierungen haben.
Irgendwelche Ideen, wie ich meine Meter
Methode in meinem Beitritt replizieren könnte? Oder vielleicht eine andere Art der Sortierung nach last_calibration_date
?
Upgrade auf 5.2, Sie sind in der Vergangenheit! –
Würde immer noch die gleichen Probleme haben. – cookavich
TBH mit DB :: roh dafür wird weniger Kopfschmerzen für Sie sein. –