Laravel 5 带某列的雄辩关系查询
我正在运行查询,查询结果如下 模型文件Laravel 5 带某列的雄辩关系查询,laravel-5,eloquent,Laravel 5,Eloquent,我正在运行查询,查询结果如下 模型文件 public function units() { return $this->hasMany('App\PowerConsumption','device_id','device_id'); } 控制器文件 return Device::with('units')->where('user_id',2)->get(); 此查询的结果是: [{ device_id: 1, user_id: 2, dev
public function units()
{
return $this->hasMany('App\PowerConsumption','device_id','device_id');
}
控制器文件
return Device::with('units')->where('user_id',2)->get();
此查询的结果是:
[{
device_id: 1,
user_id: 2,
device_name: "Bulb 1",
relay_num: 22,
sensor_num: 4,
status: 1,
created_at: "2016-07-11 02:11:32",
updated_at: "2016-07-19 08:25:30",
units: [
{
p_id: 1,
device_id: 1,
unit: 0.022121944444444,
month: "7",
hour: "1",
minute: "0",
created_at: "2016-07-18 00:00:00",
updated_at: "2016-07-18 00:00:00"
},
{
p_id: 2,
device_id: 1,
unit: 0.022121944444444,
month: "7",
hour: "1",
minute: "5",
created_at: "2016-07-18 00:00:00",
updated_at: "2016-07-18 00:00:00"
}
]
但是我想运行这个查询
Device::with('units')->groupBY('hour')
->selectRaw('round(sum(unit),4) as yAxis,hour as xAxis')
->where('user_id',2)->get();
}
这个查询会产生如下错误
QueryException in Connection.php line 713:
SQLSTATE[42S22]: Column not found: 1054 Unknown column 'unit' in 'field list' (SQL: select round(sum(unit),4) as yAxis,hour as xAxis from `devices` where `user_id` = 2 group by `hour`)
所以请帮我查询。试试这个
试试这个
此查询的结果[{设备id:1,用户id:2,设备名称:“灯泡1”,继电器编号:22,传感器编号:4,状态:1,创建地点:“2016-07-11 02:11:32”,更新地点:“2016-07-19 08:25:30”,单位:[]]请尝试我的更新答案,我已将设备id添加到该查询结果表的FK列列表中[{设备id:1,用户id:2,设备名称:“灯泡1”,继电器编号:22,传感器编号:4,状态:1,创建地点:“2016-07-11 02:11:32”,更新地点:“2016-07-19 08:25:30”,单位:[]]请尝试我的更新答案,我已将设备id添加到表格的FK列列表中
$devices = Device::with(['units' => function($query){
$query->selectRaw('device_id,round(sum(unit),4) as yAxis,hour as xAxis');
}])
->where('user_id',2)
->get()
->each(function ($item, $key) {
return $item->units->groupBy('xAxis');
});
$devices = Device::with(['units' => function($query){
$query->selectRaw('device_id,round(sum(unit),4) as yAxis,hour as xAxis')->groupBy('xAxis);
}])
->where('user_id',2)
->get();