Код: Выделить всё
/**
* @return \yii\db\ActiveQuery
*/
public function getEkipajRayons()
{
return $this->hasMany(EkipajRayon::className(), ['ekipaj_id' => 'id']);
}
/**
* @return \yii\db\ActiveQuery
*/
public function getRayons()
{
return $this->hasMany(Rayon::className(), ['rayon_id' => 'rayon_id'])->via('ekipajRayons');
}
Код: Выделить всё
$current=Ekipaj::find()->select('id,name')->with(['rayons'=>function($q){
$q->select('rayon_id,name');
}])->asArray()->all();
VarDumper::dump($current,10,true);
Код: Выделить всё
0 => [
'id' => '1'
'name' => 'Экипаж №1 (Такой-то)'
'ekipajRayons' => [
0 => app\models\EkipajRayon#1
(
[yii\db\BaseActiveRecord:_attributes] => [
'ekipaj_id' => 1
'rayon_id' => 5
]
[yii\db\BaseActiveRecord:_oldAttributes] => [
'ekipaj_id' => 1
'rayon_id' => 5
]
[yii\db\BaseActiveRecord:_related] => []
[yii\base\Model:_errors] => null
[yii\base\Model:_validators] => null
[yii\base\Model:_scenario] => 'default'
[yii\base\Component:_events] => []
[yii\base\Component:_behaviors] => []
)
1 => app\models\EkipajRayon#2
(
[yii\db\BaseActiveRecord:_attributes] => [
'ekipaj_id' => 1
'rayon_id' => 6
]
[yii\db\BaseActiveRecord:_oldAttributes] => [
'ekipaj_id' => 1
'rayon_id' => 6
]
[yii\db\BaseActiveRecord:_related] => []
[yii\base\Model:_errors] => null
[yii\base\Model:_validators] => null
[yii\base\Model:_scenario] => 'default'
[yii\base\Component:_events] => []
[yii\base\Component:_behaviors] => []
)
]
'rayons' => [
0 => [
'rayon_id' => '5'
'name' => 'Марково'
]
1 => [
'rayon_id' => '6'
'name' => 'Мегет'
]
]
]
Код: Выделить всё
0 => [
'id' => '1'
'name' => 'Экипаж №1 (Такой-то)',
'rayons' => [
0 => [
'rayon_id' => '5'
'name' => 'Марково'
],
1 => [
'rayon_id' => '6'
'name' => 'Мегет'
]
],
Ну или даже с промежуточной, но всё же в более адекватном виде без служебных данных
В общем, это баг, или фича, или как-то можно кастомизировать без дополнительной обработки результата?