Log message #4056886

# At Username Text
# Jul 25th 2017, 17:01 rogerpro Let’s solve it…
# Jul 25th 2017, 17:01 rogerpro Right! ,:)
# Jul 25th 2017, 16:58 cleptric That’s it :slightly_smiling_face:
# Jul 25th 2017, 16:58 cleptric Just setting sth in the entity mutates the object
# Jul 25th 2017, 16:58 cleptric Because you don’t save it
# Jul 25th 2017, 16:58 cleptric Why creating a new event instance if you just could call a method in your model :P
# Jul 25th 2017, 16:58 rogerpro app table
# Jul 25th 2017, 16:57 rogerpro (session is an Entity in this case)
# Jul 25th 2017, 16:57 rogerpro it returns a Session object with a modified ‘duration’ field value. But it does not go to the DB table…
# Jul 25th 2017, 16:57 rogerpro Right now I want to understand why this code on the `beforeSave`is executed but not reflected on the DB: `debug($session->set(‘duration’, $this->getInterval($begin, $end)));`
# Jul 25th 2017, 16:56 rogerpro Yes, good idea, but why? Am I too much exigent to Cake? :)
# Jul 25th 2017, 16:54 cleptric What about extracting the logic inside your `beforeSave` into a method and call it in you shell and beforeSave?
# Jul 25th 2017, 16:53 rogerpro This is on a shell.
# Jul 25th 2017, 16:52 slackebot1 $this->$model->find()->where([ ‘id’ => ‘5c12a233-f0c6-449f-b493-28b4912b528e’ ]); // just for testing with only 1 entity $my_event = new \Cake\Event\Event(‘Model.beforeSave’); foreach ($q as $key => $value) { $this->$model->beforeSave($my_event, $value); } } ```
# Jul 25th 2017, 16:52 rogerpro I understand, thanks. So now I’m running entities in a foreach loop and the beforeSave is executed, but not actually saved the value. ``` /** * Resave all entities of a model. * * This will trigger many events (i.e. beforeSave) so data will * be consistent with the current implementation of the Entity. */ public function resave($model = ‘’) { $this->loadModel($model); $q =
# Jul 25th 2017, 16:31 dereuromark you cannot, by design, for atomatic operations, just dont use them if you need the callbacks
# Jul 25th 2017, 16:19 rogerpro Maybe will be good to enable after and beforeSave on `updateAll` upon request as a feature.
# Jul 25th 2017, 16:17 rogerpro I can just refactor the logic of the `beforeSave` and call it from a Shell and from the `beforeSave` itself. But I just wanted to know how to do it _comme il faut_
# Jul 25th 2017, 16:16 rogerpro For efficiency, @admad. Why using a behaviour many times per minute if I only want it once a year?
# Jul 25th 2017, 16:15 rogerpro And, by the way, `updateAll`does not trigger `beforeSave` https://book.cakephp.org/3.0/en/orm/saving-data.html#bulk-updates
# Jul 25th 2017, 16:14 admad Why not if it does the job you want?
# Jul 25th 2017, 16:13 rogerpro About CounterCacheBehavior: I don’t want to enable a Behaviour on a Model just to use it once. I will study it more deeply
# Jul 25th 2017, 16:12 rogerpro Yes, but this is not the case. I want tu run this “recalculation process” just now and maybe for some particular reasons on the future. Not on any regular basis.
# Jul 25th 2017, 16:11 cleptric Normally you would call `updateAll` in your afterSave if you want to update something based on a saved entity
# Jul 25th 2017, 16:11 rogerpro Thanks! I will take a look. It was mentioned many times at CakeFest
# Jul 25th 2017, 16:10 rogerpro Maybe with an Expression on the query() but… I find this complicated
# Jul 25th 2017, 16:10 cleptric It does similar things
# Jul 25th 2017, 16:10 cleptric Have a look at the CounterCacheBehavior
# Jul 25th 2017, 16:10 rogerpro The goal is to trigger a save on all entities. `afterSave`will work for only one specific entity
# Jul 25th 2017, 16:09 rogerpro I’m playing with the console and `$my_table->query()->update()->execute);` but it needs a SET
# Jul 25th 2017, 16:08 cleptric `afterSave`? :slightly_smiling_face:
# Jul 25th 2017, 16:08 rogerpro As a challenge, I want to have it on a shell, in a good Cake way. Not only running SQL which I can do in 2 minutes
# Jul 25th 2017, 16:08 rogerpro In other words, I want to recalculate a specific field for all files of the table
# Jul 25th 2017, 16:07 rogerpro Just to “resave” all entities to force running beforSave(), which is a method that I created after many entities were saved
# Jul 25th 2017, 16:06 cleptric What do you want to do?
# Jul 25th 2017, 16:05 rogerpro Sorry, I mean already existing entities
# Jul 25th 2017, 16:05 cleptric Add the method to your table
# Jul 25th 2017, 16:04 rogerpro What is the best way to run `beforeSave()` for all the entities of a table?
# Jul 25th 2017, 16:00 cleptric Wouldn’t be a compound key be sufficient?
# Jul 25th 2017, 15:59 neon1024 Shouldn’t the join/pivot table have a primary key?
# Jul 25th 2017, 15:49 ra7bi Tks