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