Русскоязычный форум, посвященный фреймворку Kohana

Все о фреймворке Kohana. Обсуждение уроков, документации.
Текущее время: 29 мар 2024, 03:21

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 11 ]  На страницу 1, 2  След.
Автор Сообщение
СообщениеДобавлено: 28 июн 2012, 13:47 
Не в сети
Новичок
Аватара пользователя

Зарегистрирован: 23 июн 2012, 10:16
Сообщения: 22
Как мне через квери билдер сделать запрос такого вида:
Код:
"UPDATE $tbl_name SET pos = $pos_current + $pos_preview - pos WHERE pos IN ($pos_current, $pos_preview) $where"

Половину написал а половину не могу:( Вот что написал:
Код:
if(mysql_num_rows($query)){
         $pos_preview = mysql_result($query, 0);
         //Меняем местами текущую и предыдущую позиции
         $query = DB::update('system_photo_catalog')->set(array(
            'pos' => $pos_curent,//Вот как тут сделать +,- ну и всё такое?:(
            //TODO
         ));
      }

Помогите плиз, желательно с примером:)
Спасибо.

_________________
:)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 28 июн 2012, 18:44 
Не в сети
Бывалый

Зарегистрирован: 02 июн 2012, 07:14
Сообщения: 69
Можно, например, так:
Код:
$query = DB::update('system_photo_catalog')
     ->set(array('pos' => DB::expr($pos_curent.' + '.$pos_preview.' - `pos`')))
     ->where('pos', 'IN', array($pos_current, $pos_preview));


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 июн 2012, 15:44 
Не в сети
Новичок
Аватара пользователя

Зарегистрирован: 23 июн 2012, 10:16
Сообщения: 22
Спасибо, попробуем:)

_________________
:)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 июн 2012, 18:23 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
Для сложных запросов лучше писать их "чистыми", чем ломать голову :)
Ну или использовать DB::expr. Тогда код вставляется "как он есть".

_________________
kohanaframework.su - обучение фреймворку Kohana


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 29 июн 2012, 22:13 
Не в сети
Новичок
Аватара пользователя

Зарегистрирован: 23 июн 2012, 10:16
Сообщения: 22
Помогите плиз еще с таким:
Код:
"SELECT MAX(pos) FROM system_photo_catalog";

Спасибо:)

_________________
:)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 июн 2012, 00:48 
Не в сети
Бывалый

Зарегистрирован: 02 июн 2012, 07:14
Сообщения: 69
Код:
$query = DB::select(array('MAX(pos)', 'max_pos'))->from('system_photo_catalog');

Где первый элемент массива - сама функция, второй - алиас.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 июн 2012, 00:57 
Не в сети
Новичок
Аватара пользователя

Зарегистрирован: 23 июн 2012, 10:16
Сообщения: 22
qed писал(а):
Код:
$query = DB::select(array('MAX(pos)', 'max_pos'))->from('system_photo_catalog');

Где первый элемент массива - сама функция, второй - алиас.

Cпасибо, большое :)
UPDATE:

Запрос думает что это колонка:(
$query = DB::select(array('MAX(pos)', 'max_pos'))->from('system_photo_catalog');

_________________
:)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 июн 2012, 12:23 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 12 фев 2012, 01:02
Сообщения: 462
А если DB::expr поставить ?
Максимальное значение еще можно получить, сделав сортировку ордер бай и лимит 1 :)

_________________
kohanaframework.su - обучение фреймворку Kohana


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 июн 2012, 13:36 
Не в сети
Новичок
Аватара пользователя

Зарегистрирован: 23 июн 2012, 10:16
Сообщения: 22
Cделал, так:
Код:
//Извлекаем текущую максимальную позицию
      $query = DB::select(DB::expr('MAX(pos)'))
            ->from('system_photo_catalog')
            ->execute();
      $position = mysql_result($query, 0) + 1;

Теперь ресурс не возвращает :(
Запара, execute(); делает mysql_result ппц....

_________________
:)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 30 июн 2012, 14:19 
Не в сети
Новичок
Аватара пользователя

Зарегистрирован: 23 июн 2012, 10:16
Сообщения: 22
Мог не заморачиватся, и вам не надоедать :)
Сделал всеравно по обычному:
Код:
$query = DB::expr('SELECT MAX(pos) FROM system_photo_catalog');
      $result = mysql_query($query);
      if(!$result)
         return FALSE;
      $position = mysql_result($result, 0) + 1;
      return $position;

_________________
:)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ]  На страницу 1, 2  След.

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Все о фреймворке Kohana  | 
Powered by phpBB® Forum Software © phpBB Group