2015-05-29 9 views
0

Извините за мой плохой английский :(Обновление строки (объект) в виде таблицы, только если изменение обнаружено (автоматически)

Я использую 3 рамки CakePHP и я хочу обновить строку (юридическое лицо) в таблице, только если изменение обнаруженного (автоматически).

Например .:

$id = 1; 
// debug($this->request->data) 
$this->request->data = ['id' => 1, 'name' => "My Name", 'content' => "My Content"]; 
// Inside the ArticlesController 
$article = $this->Articles->get($id); 
// debug($article) 
object(Cake\ORM\Entity) { 
    'id' => (int) 1, 
    'name' => "My Name", 
    'content' => "My Content", 
    '[new]' => false, 
    '[accessible]' => [ 
     '*' => true 
    ], 
    '[dirty]' => [], 
    '[original]' => [], 
    '[virtual]' => [], 
    '[errors]' => [], 
    '[repository]' => 'Articles' 
} 

Существует нет д ifference между данные запроса и исходные данные так что я должен отклонить запрос на обновление и возвращает предупреждение пользователю "Никаких изменений не обнаружено! ? "

Что я должен сделать

Благодаря

ответ

0

Каждый объект имеет поле„грязный“, который показывает, если объект был обновлен

Вы могли бы использовать что-то вроде:.

if($article->dirty()) { 
    // send a flash message 
} 

Проверьте книгу здесь: http://book.cakephp.org/3.0/en/orm/entities.html#checking-if-an-entity-has-been-modified

+0

нет, грязный метод не определяет, было ли изменено значение конкретного ключа :( , если вы просто добавили '' '$ article-> name =" My Name "' '' после '' '$ this- > Статьи-> get ($ id); '' 'вы получите' '' '[грязный] '=> [' name '=> true]' '' –

+0

Разве вы этого не хотели? Вы сможете проверить, обновил ли 'patchEntity ваш объект в' ArticlesController'. – Jun

+0

yes '' 'patchEntity''' угадает разницу между ** данными orignal ** и ** данными запроса ** :) –