Проверка данных при обновлении DataMapper ORM CodeIgniter
Я новичок в DataMapper ORM в CodeIgniter, вот мой вопрос. Согласно инструкции:
Будьте осторожны с этим методом. Не ограничивая его оператором where или подобными методами, он будет изменять каждую строку таблицы!
Кроме того, этот метод обходит проверку и может также работать с внешними ключами в таблице, поэтому следует помнить о рисках.
Если метод обновления обходит проверку, как можно обновить запись, проверяя ее перед обновлением? Пример кода будет оценен.
3 ответа
DataMapper ORM не может проверить, потому что он может делать это только с данными, которые вы извлекли первыми. С помощью UPDATE
позволяет MySQL изменять поля без проверки возможных функций проверки PHP.
Решение - сначала собрать все нужные вам строки и использовать save()
функция. Затем будет выполнена проверка на стороне PHP.
http://datamapper.wanwizard.eu/pages/save.html
Я немного заржавел в DataMapper ORM, но вот пример, который должен объяснить, что вы должны делать:
$users = new User();
$users->where('age', 25)->get();
foreach($users as $user)
{
$user->age = 26;
$user->save();
}
Если вы попытаетесь $obj->save(); и динамические правила проверки (в зависимости от некоторой переменной $_POST) и до сих пор не имеют проверки,
попробуйте использовать $obj->force_validation(); перед $obj->save();
Метод update() - это не более чем псевдоним для $this->db->update().
Он только проверяет, нужно ли добавлять обновленную метку времени к обновленным записям, и проверяет, существуют ли переданные поля в таблице, которую вы собираетесь обновить.
для обновления объектов используйте save(). Он автоматически определит, требуется ли INSERT или UPDATE.