Запрос UPDATE как реализовать?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
MaxKyivUA
Сообщения: 6
Зарегистрирован: 2017.10.29, 13:52

Запрос UPDATE как реализовать?

Сообщение MaxKyivUA »

Представим, что есть задача поменять 2 поля местами со 2го на 1е и наоборот.
Вот мы выбираем текущую позицию

Код: Выделить всё

SELECT pos FROM system_page WHERE id_position = 3 LIMIT 1
и нам вернуло 2. Потом выбираем пред идущую

Код: Выделить всё

SELECT pos FROM system_page WHERE pos < 2 ORDER BY pos DESC LIMIT 1
соответственно нам пришло 1.
С этим у меня проблем нет не каких :-) А далее надо сделать запрос на UPDATE такого вида:

Код: Выделить всё

UPDATE system_page SET pos = 2 + 1 - pos WHERE pos IN (2, 1)
Вот у меня вопрос: "Как его сделать? Какой для этого есть класс/метод?"
Спасибо.
caHek2x
Сообщения: 1240
Зарегистрирован: 2016.04.12, 20:41

Re: Запрос UPDATE как реализовать?

Сообщение caHek2x »

MaxKyivUA писал(а): 2017.11.29, 01:04 Представим, что есть задача поменять 2 поля местами со 2го на 1е и наоборот.
выберите еще и id первого и второго ... а потом запрос:
UPDATE system_page SET pos = pos + 1 WHERE id = 1
UPDATE system_page SET pos = pos - 1 WHERE id = 2

только причем тут yii2 ? вы с моделями работаете ? или с чистыми запросами ?
MaxKyivUA писал(а): 2017.11.29, 01:04 Представим, что есть задача поменять 2 поля местами со 2го на 1е и наоборот.

Код: Выделить всё

UPDATE system_page SET pos = 2 + 1 - pos WHERE pos IN (2, 1)
3 - pos это что ? так как я у вас задача ? поменять местами или 3 - pos ?
Последний раз редактировалось caHek2x 2017.11.29, 01:23, всего редактировалось 1 раз.
Аватара пользователя
Dominus
Сообщения: 892
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Запрос UPDATE как реализовать?

Сообщение Dominus »

Если речь идет о позициях, то существуют готовые решения, например это: https://github.com/yii2tech/ar-position
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!
MaxKyivUA
Сообщения: 6
Зарегистрирован: 2017.10.29, 13:52

Re: Запрос UPDATE как реализовать?

Сообщение MaxKyivUA »

Dominus писал(а): 2017.11.29, 01:23 Если речь идет о позициях, то существуют готовые решения, например это: https://github.com/yii2tech/ar-position
За решение большое спасибо, сейчас читаю как им пользоваться. Судя из того, что пишет автор это именно то, что мне надо :) Сейчас установлю посмотрю на действие и обязательно напишу о результате.
MaxKyivUA
Сообщения: 6
Зарегистрирован: 2017.10.29, 13:52

Re: Запрос UPDATE как реализовать?

Сообщение MaxKyivUA »

caHek2x писал(а): 2017.11.29, 01:21 выберите еще и id первого и второго ... а потом запрос:
UPDATE system_page SET pos = pos + 1 WHERE id = 1
UPDATE system_page SET pos = pos - 1 WHERE id = 2
Вы не внимательно читали или я не особо понятно написал. Там явно видно, что Ид присутствует.
caHek2x писал(а): 2017.11.29, 01:21 только причем тут yii2 ? вы с моделями работаете ? или с чистыми запросами ?
Как это причём, вопрос заключался в том как выполнить на Yii2 UPDATE команда такая в SQL , пускай будет " чистыми запросами "
caHek2x писал(а): 2017.11.29, 01:21 3 - pos это что ? так как я у вас задача ? поменять местами или 3 - pos ?
Да поменять местами, и эта

Код: Выделить всё

UPDATE system_page SET pos = 2 + 1 - pos WHERE pos IN (2, 1)
команда, меняет местами 2 записи. Затрагивает две строки и меняет в них числа в поле pos местами.
MaxKyivUA
Сообщения: 6
Зарегистрирован: 2017.10.29, 13:52

Re: Запрос UPDATE как реализовать?

Сообщение MaxKyivUA »

Dominus писал(а): 2017.11.29, 01:23 Если речь идет о позициях, то существуют готовые решения, например это: https://github.com/yii2tech/ar-position
Это просто бомба! Всё легко и просто!
Спасибо большое за помощь, да благословит вас Господь!
Ответить