Laravel急于使用内部数据加载

时间:2015-04-13 21:15:04

标签: php laravel eager-loading

我正在尝试在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”?

1 个答案:

答案 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();