VladSavelev
@VladSavelev
Good man

Почему updateAll не изменяет последнее поле?

К примеру у меня такой код:
Orders::updateAll([partner_commission_payment_id => $newCommissionsPayment->id], [partner_id => 2]);

Почему-то не апдейдит последнюю запись. Последней итерации foreach(a).
Например: Если под запрос попало 10 строк, 9 он проапдейтит, а в десятой остается null.
Продебажил, вроде все должно отрабатывать.
Yii2 создает такой вот SQL запрос. Работаю с postgresql.
UPDATE "orders" SET "partner_commission_payment_id"=40 WHERE partner_id = 2

Попробовал в постгрес-админе задать, вывел:
ERROR:  syntax error at or near "SET"
LINE 1: SELECT COUNT(*) AS total FROM (UPDATE "orders" SET "partner_...


Помогите пожалуйста понять в чем причина.
  • Вопрос задан
  • 739 просмотров
Решения вопроса 1
VladSavelev
@VladSavelev Автор вопроса
Good man
В SQL двойных кавычек?) То есть вы хотите сказать что разработчики Yii2 не правильно SQL используют ?:) Это же фреймворк генерирует эти SQL запросы. Я показал что я через дебагер получил.
Хорошо, спасибо за совет.

Ответ:
На следующий день перезагрузил компьютер и О ЧУДО, метод updateAll начал апдейтить все строки.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
AlexMaxTM
@AlexMaxTM
Чего-то я запутался. В самом заголовке вопроса написано
последнее поле

И вопросе речь тоже вроде идет о колонках.
Если под запрос попало 10 колонок

Но в запросах идет изменение только одного поля partner_commission_payment_id, а не десяти.
Или всё же речь должна идти о записях (строчках)?
Ответ написан
@yiiworld
Как минимум нужно строковые операторы в кавычки взять ))
Orders::updateAll(['partner_commission_payment_id' => $newCommissionsPayment->id], ['partner_id' => 2]);

А использование в SQL двойных кавычек не по назначению весьма сомнительное удовольствие.
Разберитесь в чем разница между тремя этими видами кавычек ` `, ' ', " "
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы