此查询:
$ids = EnergyMeters::leftJoin('meteringpoint_energymeter_relation', 'energymeter.id', '=',
'meteringpoint_energymeter_relation.meterId')
->where('id', '=', $meterPointId)
->where('Deleted', '=', '0')
->select('energymeter.id')
->orderBy('name')
->get();
结果给了我一些 id(结构为 key、val)
[{"id":"03cd0c39-a51c-41a0-bbe3-37ae641d051e"},{"id":"0ebf61e7-b751-4931-b737-d8f71297e499"}, {"id"}, '...']
但是我只需要 ids 作为这个新的求和查询的数组:
Data::select(array(DB::RAW('sum(v1) as sumV1', 'sum(v2) as sumV2')))
->whereIn('id', $ids)
->where('PointOfTime', '>', $from)
->where('PointOfTime', '<=', $to + 86400)
->get();
对此有什么 Eloquent 解决方案吗?否则,我将循环遍历 key 和 val 数组并将它们的值推送到一个新数组。没那么聪明吗?
//编辑问题以使其更清楚
最佳答案
对第一个查询结果集使用;
$data = Data::select(array(DB::RAW('sum(v1) as sumV1', 'sum(v2) as sumV2')))
->whereIn('id', $ids)
->where('PointOfTime', '>', $from)
->where('PointOfTime', '<=', $to + 86400)
->get();
$ids = $data->lists('id');
注意lists('id')
,这将为您提供所需的数组。然后您可以将结果传递到另一个查询中。
关于php - 检索数组而不是键 :val (laravel/eloquent),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26803097/