On Saturday, 29 June 2013 19:53:49 UTC+2, Vanja Dizdarević wrote:
>
> When updating a row, I wish to read the "old" data before saving the
> current record.
>
> Here's a simplified example:
>
> Controller code:
> $this->User->save(['id' => 3, 'username' => 'a-new-username']);
>
> Model code:
> class User extends AppModel {
> public function beforeSave($options){
> //is it an update?
> if (isset($this->data[$this->alias][$this->primaryKey])) {
> //read record
> $oldData =
> $this->findById($this->data[$this->alias][$this->primaryKey]);
> //^^^ here's the problem! ^^^
> if ($oldData[$this->alias]['username_update_count'] >= 3){
> return false;
> }
> else {
> $this->data[$this->alias]['username_update_count'] =
> $oldData[$this->alias]['username_update_count'] + 1;
> }
> }
> }
> }
>
> The problem is, that $this->findById (or any other READ operation) fills
> the current $this->data with the read data
>
If by "READ operation" you mean a find call (you refer to findById - a
find) - that is quite simply not true.
If you call the method
Model::read<http://book.cakephp.org/2.0/en/models/retrieving-your-data.html#model-read>
however,
it will populate $this->data.
AD
--
Like Us on FaceBook https://www.facebook.com/CakePHP
Find us on Twitter http://twitter.com/CakePHP
---
You received this message because you are subscribed to the Google Groups
"CakePHP" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/groups/opt_out.