В Yii2 можно работать с дополнительными полями и связанными моделями в выборке данных с помощью методов `select` и `with` объекта запроса ActiveRecord.
Для получения выборки данных в требуемом формате, вам необходимо использовать метод `select` в сочетании с методом `with`.
Приведенный ниже код демонстрирует, как это можно сделать:
```php
$query = MyClass::find()->select([
'a',
'param' => function ($model) {
return $model->getParam(); // метод getParam - это геттер, который должен быть определен в вашей модели MyClass
},
])->with([
'child' => function ($query) {
$query->select(['c']);
},
])->asArray()->all();
```
В этом примере:
- Метод `select` используется для указания полей, которые вы хотите выбрать из модели MyClass. Поле `a` выбирается, как есть, а поле `param` вычисляется с помощью геттера `getParam()`.
- Метод `with` используется для указания связанной модели SubClass и полей, которые вы хотите выбрать из нее. Здесь мы выбираем только поле `c`.
- Метод `asArray` используется для получения данных в виде массива, а не объектов.
Результат будет в формате, как вы указали в вашем вопросе:
```php
[
[
'a' => 'значение поля a',
'param' => 'значение поля param',
'child' => [
'c' => 'значение поля c',
],
],
// остальные записи данных
]
```
Обратите внимание, что необходимо определить геттер `getParam()` в модели MyClass, чтобы получить значение для поля `param`. Этот геттер можно определить в классе модели MyClass следующим образом:
```php
public function getParam()
{
// возвращайте нужное значение для поля param
// например, возвращайте $this->param, если поле param существует в таблице, или любое другое значение по вашему выбору
}
```