我正在尝试在Laravel的一些急切加载中使用数据。
我有一个“传感器”表,其中有一个“测量”。
我需要每小时检查传感器的每次测量。当我这样做时,它会保存在“sensors.last_checked_measurement”中检查的测量的最后一个id
$sensors = Sensor::with(array('measurements' => function($query) {
$query->where('id', '>', SENSOR.LAST_CHECKED_MEASUREMENT); // <-- in between data
}))->get();
如您所知,这可以转化为
"select * from 'sensors'"
"select * from `measurements` where `measurements`.`sensor_id` in (?, ?) and `id` > ?"
如果Laravel可以使用第一个查询的结果来获取下一个的sensor_id,那么可能就可以了,对吗?
所以我的问题:
如何在热切加载中使用“SENSOR.LAST_CHECKED_MEASUREMENT”?
答案 0 :(得分:1)
您是否尝试过db :: raw?
$sensors = Sensor::with(array('measurements' => function($query) {
$query->where('id', '>', DB::raw('SELECT LAST_CHECKED_MEASUREMENT FROM SENSOR ORDER BY ID DESC LIMIT 1'));
}))->get();