У меня есть 2 таблицы: Клиенты и Активы Назначения.Таблица клиентов имеет поле: is_active.
В режиме редактирования, когда is_active изменяется с TRUE на FALSE, мне нужно обновить таблицу назначений, установив end_date = TODAY для всех assets_assignations выбранного клиента.
AssetsAssignations содержит следующие поля: (id, asset_id, client_id, room_id, ip_address, начальная_дата, конечная_дата).В AssetsAssignationsTable:
public function initialize(array $config)
{
parent::initialize($config);
$this->table('assets_assignations');
$this->displayField('id');
$this->primaryKey('id');
$this->belongsTo('Assets', [
'foreignKey' => 'asset_id'
]);
$this->belongsTo('Clients', [
'foreignKey' => 'client_id'
]);
$this->belongsTo('Rooms', [
'foreignKey' => 'room_id'
]);
}
В ClientsTable:
public function initialize(array $config)
{
parent::initialize($config);
$this->table('clients');
$this->DisplayField('full_name');
$this->primaryKey('id');
$this->hasMany('AssetsAssignations', [
'foreignKey' => 'client_id'
]);
....
}
Это моя функция редактирования для клиентов:
public function edit($id = null)
{
$client = $this->Clients->get($id, [
'contain' => []
]);
if ($this->request->is(['patch', 'post', 'put'])) {
$client = $this->Clients->patchEntity($client, $this->request->data);
if ($this->Clients->save($client)) {
$this->Flash->success(__('The client has been saved.'));
return $this->redirect(['action' => 'index']);
}
$this->Flash->error(__('The client could not be saved. Please, try again.'));
}
$clientTypes = $this->Clients->ClientTypes->find('list', ['limit' => 200]);
$this->set(compact('client', 'clientTypes'));
$this->set('_serialize', ['client']);
}