Обновление данных для принадлежности - PullRequest
0 голосов
/ 29 сентября 2019

Я пытаюсь обновить ActivityNote и поле для Контакта, которому он принадлежит.

class ActivityNote extends AppModel {
public $name = 'ActivityNote';
public $actsAs = array('Containable');

public $belongsTo = array(
    'ActivityType' => array('className' => 'ActivityType', 'foreignKey' => 'activity_type_id'),
    'Contact' => array('className' => 'Contact', 'foreignKey' => 'contact_id', 'dependent' => true),
    'User' => array('className' => 'User', 'foreignKey' => 'user_id'));

}

Вид выглядит следующим образом

    <tr class="altrow">
    <td><?php echo $this->Form->input('activity_type_id', array('label' => false)); ?></td>
    <td><?php echo $this->Form->input('copy', array('label' => false, 'type' => 'checkbox', 'disabled' => is_null($secondaryId))); ?></td>
    <td><?php echo $this->Form->input('Contact.prospect', array('label' => false, 'type' => 'checkbox')); ?></td>
    <td colspan="2"><?php echo $this->Form->input('activity_date', array('label' => false, 'dateFormat' => 'DMY', 'minYear' => date('Y')-1, 'maxYear' => date('Y')+1)); ?></td>
    </tr>

Я добавил поле Contact.prospect, оно показывает нормально, если отмечено или нет, проблема в том, что я не могу его обновить.

И контроллер

function edit($id, $primaryId, $secondaryId = null) {
    if(!$id) {
        $this->Session->setFlash(__(''));
        $this->redirect(array('action' => 'index'), null, true);    
    }
    if (!empty($this->request->data) && isset($this->request->data['ActivityNote']['text'])) {
        $this->ActivityNote->create();
        if ($this->ActivityNote->save($this->request->data)) {
            if (isset($this->request->data['ActivityNote']['copy_id'])) {
                // also update copy if exits - apart from contact_id and copy_id all other fields identical
                $this->request->data['ActivityNote']['id'] = $this->request->data['ActivityNote']['copy_id'];
                $this->request->data['ActivityNote']['contact_id'] = $secondaryId;
                $this->ActivityNote->create();
                $this->ActivityNote->save($this->request->data);
            }
            $this->Session->setFlash(__(''), 'default', array('class' => 'success'));
            $this->redirect(urldecode($this->request->data['ActivityNote']['url']));
        } else {
            $this->Session->setFlash(__(''));
        }
    }
    $url = (isset($this->request->data['url']))? $this->request->data['url'] : $this->Session->read('Activity.url');
    $this->Session->write('Activity.url', $url); 
    $this->request->data = $this->ActivityNote->read(null, $id);
    $activityTypes = $this->ActivityNote->ActivityType->find('list', array('fields' => array('ActivityType.id', 'ActivityType.value')));        
    $contact = $this->Contact->findById($primaryId);
    $this->request->data['Contact'] = $contact['Contact'];
    debug($this->request->data);
    $this->ActivityNote->saveAssociated($this->request->data, array('deep'=>TRUE));
    debug($this->request->data['Contact']['prospect']);
    $contactTypes = $this->Contact->ContactType->find('list', array('fields' => array('ContactType.id', 'ContactType.value')));
    $contactName = ($primaryId)? $contact['Contact']['name'] : ''; 
    $users = $this->Contact->User->find('list', array('fields' => array('User.id', 'User.name')));
    $this->set(compact('url', 'activityTypes', 'users','primaryId', 'contactName', 'secondaryId', 'contact'));
}

И это массив запроса-> данных, в который я добавил контакт, который я извлек с идентификатором.

array(
'ActivityNote' => array(
    'id' => '4400',
    'copy_id' => null,
    'contact_id' => '126',
    'created' => '2017-11-15 12:02:32',
    'modified' => '2019-09-29 11:55:29',
    'activity_date' => '2017-11-10',
    'user_id' => '0',
    'activity_type_id' => '3',
    'text' => '',
    'follow_up' => false,
    'follow_up_date' => '2019-09-28',
    'completion_date' => null
),
'Contact' => array(
    'id' => '126',
    'created' => '2012-05-03 14:11:56',
    'modified' => '2019-09-29 11:18:28',
    'creator_id' => '1',
    'provider_id' => null,
    'user_id' => '4',
    'company_name' => '',
    'first_name' => '',
    'middle_names' => '',
    'last_name' => '',
    'contact_type_id' => '2',
    'company_reg' => '',
    'debitor_no' => null,
    'creditor_no' => null,
    'employee_no' => null,
    'c_o' => '',
    'address1' => '',
    'address2' => '',
    'zip' => '',
    'city' => '',
    'country' => '',
    'address_type_id' => null,
    'phone_code' => '45',
    'phone_number' => '',
    'cell_code' => '45',
    'cell_number' => '',
    'email' => '',
    'website' => '',
    'location' => '',
    'status_id' => '7',
    'prospect' => true,
    'customer' => false,
    'supplier' => false,
    'staff' => false,
    'note' => '',
    'apartment_qty' => '192',
    'message' => null,
    'full_name' => '',
    'name' => '',
    'full_address' => '',
    'full_phone' => '',
    'full_cell' => '',
    'phones' => ' / '
)

)

Что я сделал, чтобы получить контакт, которыйActivityNote принадлежит, добавьте его в запрос-> данные и затем сохраните Ассоциированный.ActivityNote обновляется, а контакт - нет.Я попытался сохранить все, тоже самое происходит

...