i have table setting,where i have fields
id------------device_id
1 10
another table data
id---------value----------device_id----------------time
1 abc 10 2015-05-05 10:00:00
2 xyz 10 2015-05-05 11:00:00
3 xyz 10 2015-05-05 12:00:00
4 xyz 10 2015-05-05 13:00:00
5 xyz 10 2015-05-05 14:00:00
6 xyz 10 2015-05-05 15:00:00
now i have relation
public function getDeviceData()
{
return $this->hasMany(Positions::className(), ['device_id' => 'device_id']);
}
i m using below query for getting data
$cur_time='2015-05-05 09:00:00';
$time ='2015-05-05 18:00:00';
$query= SpeedAlert::find()->joinwith(['deviceData'])
->where(['between','time',$cur_time,$time])
->asArray()
->all();
i need above query like select from data where setting.device_id=data.device_id.
and i need data as array like below
array[0]=
id=1
device_id=10
[deviceData]=array
(
id=1
device_id=10
value=abc
time=2015-05-05 09:00:00
)
(
id=2
device_id=10
value=abc
time=2015-05-05 10:00:00
)
......
........................
...................
)
my problem is i need data from data table but where device_id is in setting table and time between from data table.
i m using this query data is coming but it is not filtering between time
$cur_time='2015-05-05 09:00:00';
$time ='2015-05-05 18:00:00';
$query= SpeedAlert::find()->joinwith(['deviceData'])
->where(['between','time',$cur_time,$time])
->asArray()
->all();