Kohana Помогите разобраться с update

fonbaron

Велосипедист
Добрый день.
Необходим запрос увиличивающий position странички начиная с определеного position
Вот что делаю
PHP:
ORM::factory('page')->where('position','>',9)
		->set(array('position' => (DB::expr('position + 1'))))
		->update();
но получается ошибка пишет что 2 аргумент не подходит.
Что я не так делаю?
 

fonbaron

Велосипедист
Вот что получилось
PHP:
DB::update(ORM::factory('page')->table_name())
			->where('position','>',9)
			->set(array('position' => (DB::expr('position - 1'))))
			->execute();
Жестоко.
 

Здыхлик

Kohaner
Команда форума
Вот что получилось
PHP:
DB::update(ORM::factory('page')->table_name())
			->where('position','>',9)
			->set(array('position' => (DB::expr('position - 1'))))
			->execute();
Жестоко.
Если завернуть все это в отдельный метод модели Model_Page, то получится красивее:

PHP:
public function update_position($from, $inc = 1)
{
	DB::update($this->table_name())
		->where('position', '>', intval($from))
		->set(array('position' => (DB::expr('position + ' . $inc))))
		->execute();
	return $this;
}
Естественно, можно сюда же добавить возможность обновлять записи с position < $from и тд.
 
  • Like
Реакции: AmdY
Сверху