Можно ли использовать подзапрос при обновлении ActiveRecord
?
У меня есть таблица products
со следующими столбцами
id number_of_orders
1 3
2 3
3 2
и items
таблица
id product_id
1 1
2 1
3 1
4 2
5 2
6 2
7 3
8 3
Я хочу
UPDATE products
SET number_of_orders = (
SELECT COUNT(id) FROM items WHERE product_id = 1
)
WHERE id = 1
Я пробовал
$subquery = ItemsModel::find()
->select('COUNT(id)')
->where(['product_id' => 1]);
ProductsModel::updateAll(
[
'number_of_orders' => $subquery
],
[
'id' => 1
]
);
и
$product = ProductsModel::findOne(1);
$product->number_of_orders = $subquery;
$product->save();
, но ни один изэто сработает.
Кто-нибудь имеет представление о решении этой проблемы?
Вывод:
Каждый из двух способов работаеточень хорошо после того, как я обновил до yii 2.0.14
.