В запросы моделей можно добавлять свои атрибуты, которых нет в таблице Пример 1 class Room extends \yii\db\ActiveRecord { public $volume; // ... } $rooms = Room::find() ->select([ '{{room}}.*', // получить все столбцы '([[length]] * [[width]] * [[height]]) AS volume', // вычислить объём ]) ->orderBy('volume DESC') // отсортировать ->all(); foreach ($rooms as $room) { echo $room->volume; // содержит значение, вычисленное с помощью SQL-запроса } Пример 2 class Customer extends \yii\db\ActiveRecord { public $ordersCount; // ... public function getOrders() { return $this->hasMany(Order::className(), ['customer_id' => 'id']); } } $customers = Customer::find() ->select([ '{{customer}}.*', // получить все атрибуты покупателя 'COUNT({{order}}.id) AS ordersCount' // вычислить количество заказов ]) ->joinWith('orders') // обеспечить построение промежуточной таблицы ->groupBy('{{customer}}.id') // сгруппировать результаты, чтобы заставить агрегацию работать ->all();
Yii Справочник v0.05 © 2007-2024 Igor Salnikov aka SunDoctor