Проверка данных при обновлении 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.

Другие вопросы по тегам