Проверка данных при обновлении DataMapper ORM CodeIgniter - PullRequest
0 голосов
/ 22 марта 2012

Я новичок в DataMapper ORM в CodeIgniter, вот мой вопрос.Согласно инструкции:

Будьте осторожны с этим методом.Не ограничивая его оператором where или аналогичными методами, он будет изменять каждую строку таблицы!

Кроме того, этот метод обходит проверку и может также работать с внешними ключами в таблице, поэтому следует учитыватьриски.

Если метод обновления обходит валидацию, как можно обновить запись, проверяющую ее перед обновлением?Пример кода будет оценен.

Ответы [ 3 ]

0 голосов
/ 26 марта 2012

Метод update () является не чем иным, как псевдонимом для $ this-> db-> update ().

Он только проверяет необходимость добавления отметки времени обновления к обновленным записям и создаетубедитесь, что переданные поля существуют в таблице, которую вы собираетесь обновить.

для обновления объектов используйте save ().Он автоматически определит, требуется ли INSERT или UPDATE.

0 голосов
/ 26 июля 2013

если вы попытаетесь $ obj-> save (); и динамические правила проверки (зависит от некоторой переменной $ _POST) и по-прежнему не имеют проверки,

попробуйте использовать $ obj-> force_validation (); перед $ obj-> save ();

0 голосов
/ 23 марта 2012

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();
}
...