Торт php 4: Как сохранить данные одного пользователя - PullRequest
0 голосов
/ 18 февраля 2020

У меня есть две таблицы базы данных 1) пользователи 2) профили

в профилях есть поле с именем bank_a c

Я пытаюсь сохранить его из модели пользователя.

Я создал форму ввода, например

<?= $this->Form->create($user) ?>
   <?= $this->Form->control('profile.bank_ac'); ?>
<?= $this->Form->end() ?>

Модель пользователя, которую я добавил ассоциативно, например

$this->hasOne('Profiles');

После отладки получаю данные типа

[
    'name' => 'Jone',
    'email' => 'abcd@yahoo.com',
    'profile' => [
        'bank_ac' => '1212212'
    ]
]

после отладки патча сущности

object(App\Model\Entity\User) {

    'name' => 'Jone',
    'email' => 'abcd@yahoo.com',
    '[new]' => true,
    '[accessible]' => [
        'name' => true,
        'email' => true,
        'created' => true,
        'modified' => true
    ],
    '[dirty]' => [
        'name' => true,
        'email' => true,
        'profile' => true
    ],
    '[original]' => [],
    '[virtual]' => [],
    '[hasErrors]' => false,
    '[errors]' => [],
    '[invalid]' => [],
    '[repository]' => 'Users'

}

В UsersController / add я применил такой код, как

public function add(){

        $user = $this->Users->newEmptyEntity();

        $user = $this->Users->patchEntity($user, $this->request->getData());

        $this->Users->save($user, ['associated' => ['Profiles']]);

}

Данные профиля не сохраняются, также не выдается никакой ошибки. Как я могу сохранить эти ассоциативные данные?

1 Ответ

1 голос
/ 18 февраля 2020

Если посмотреть на результат отладки вашей сущности, в конфигурации специальных возможностей отсутствует поле profile, что запрещает его использование в массовых назначениях (исправлениях).

Добавьте его в свойство User::$_accessible, и оно должно работать:

protected $_accessible = [
    // ...
    'profile' => true,
];

См. также

...