我正在處理從各種關係中輸出的數據表。Laravel 4.2根據雄辯的關係問題排序
大部分數據來自meters
表,其中有一個Meter
模型,但其中一些數據是通過關係從其他表中提取的。例如,我在排序calibrations
表時遇到問題。
該數據表有可排序的列,工作得很好。基於其他關係進行排序的列具有連接,以便在沒有任何查詢錯誤的情況下進行排序。
除了一個,last_calibration_date
之外,所有的排序和連接工作。
沒有列名爲last_calibration_date
。實際上,每個meter
可能有多個校準。
在Meter
模型我搶通過calibration_date
列last_calibration_date
從calibrations
表是這樣的:
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');
}
這華麗的作品時,我不由last_calibration_date
列進行排序,但返回SQL錯誤,如果您嘗試在沒有連接的情況下進行排序。
這是我嘗試在加盟:
if ($sort == 'last_calibration_date')
{
$query->join('calibrations', 'calibrations.meter_id', '=', 'meters.id');
$sort = 'calibrations.calibration_date';
}
雖然這並不返回一個錯誤,也不會返回實際last_calibration_date
。
只是一點點更多的信息,該calibrations
表設置像這樣
calibrations
- id
- calibration_date
- next_calibration_date
- meter_id
因此,如前面所說,任何儀可能有多次校準。
關於如何在我的連接中複製我的Meter
方法的任何想法?或者,也許另一種排序方式是last_calibration_date
?
升級到5.2,你已經過去了! –
仍然會有同樣的問題。 – cookavich
使用DB :: raw的TBH對於你來說不會讓你頭疼。 –