cakePHP – beforeSave

CompaniesTable,

$this == Companies, $this->Projects - powiązana tabela
use Cake\Event\EventInterface;
use Cake\Database\Expression\QueryExpression;

class CompaniesTable extends Table
{

public function beforeSave(EventInterface $event, $entity, $options)
{
  // zmienione pole manager_id
  if($entity->isDirty('manager_id')) {
      $entity->prev_manager_id = $entity->getOriginal('manager_id') ;  // pole przed zmianę

      // podstawienie innej kolumny, wyrażenia
      $set_prev_manager_id = new QueryExpression('prev_manager_id = manager_id');  

      $this->Projects->updateAll(
        [
          $set_prev_manager_id,
          'manager_id' => $entity->manager_id 
        ], 
        [
          'company_id' => $entity->id 
        ]
      );
  }
}