Cakephp 4:如何保存 hasone 数据

Cakephp 4 : How to save hasone data

我有两个数据库 table 1) 用户 2) 配置文件

配置文件有一个名为 bank_ac

的字段

我正在尝试从用户模型中保存它。

我创建了像

这样的表单输入
<?= $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']]);

}

配置文件数据未保存,也未收到任何错误。如何保存此关联数据?

查看您的实体调试结果,可访问性配置中缺少 profile 字段,因此不允许在批量分配(修补)中使用它。

将它添加到您的 User::$_accessible 属性,它应该可以工作:

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

另见