Я всё больше и больше разочаровываюсь в их документации, в отсутствии обратной совместимости от версии к версии в большинстве модулей. Это из того, что я уже могу с уверенностью сказать, после полутора месяцев её использования. Думаю, что ситуация исправится в ближайшее время в лучшую сторону, но главное чтобы у этого фреймворка были свои сторонники и не разбегались уже приобретённые.
Яркий пример, который я только что поймал, на ровном месте – это использование метода update() из query builder. Использовал такую вот нехитрую конструкцию:
$db->update("news", Array('status'=>0));
Куда уже проще запрос?! – Необходимо поставить всем элементам таблицы News статус равный 0. Но Кохана завалилась, с ошибкой:
> ttm/system/libraries/drivers/Database/Mysql.php [392]:
There was an SQL error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1 - UPDATE `news` SET `status` = 0 WHERE
Понятное дело, но зачем where сюда приплели, если даже нет условия? Мне нужно сделать Update для всех элементов таблицы.
Решение тут, конечно, простое – использовать условие-пустышку, но неприятный осадок всё-таки остался:
$db->where('status', 1)->update("news", $data);
Я использую не самую свежую версию KOHANA_VERSION = 2.3.2, но не думаю что ситуация сильно поменялась в следующих. Боюсь обновляться, чтобы проект не завалился где-то в другом месте на финишной стадии разработки =)
ну так в UPDATE нужно указать для WHERE условие - вот оно и ругнулось, в доке ж написан пример:
ОтветитьУдалить$status = $db->update('news', array('status' => 1), array('id > ' => 0));
я не то чтоб оправдываю - мне б тоже хотелось чтоб оно работало и с:
$db->update("news", Array('status'=>0));
и само догадывалось, но видно пока еще не дошли до этого руки разработчиков.
to K:
ОтветитьУдалитьстранно, что в документации не сказано, что этот параметр обязателен в query builder-е. Я, например, действовал по аналогии с остальными запросами, если мне условие не нужно - я его могу не указывать, тогда тот же select будет выполняться без ограничений. Так почему для update такое исключение, где логика?
Мне кажется, это банальное упущение в коде и сырость framework-а Kohana.