CakePHP4:如何保存hasone数据
我有两个数据库表1)用户2)配置文件 profiles有一个名为bank_ac的字段 我试图从用户模型中保存它 我创建了表单输入,如CakePHP4:如何保存hasone数据,cakephp,cakephp-4.x,Cakephp,Cakephp 4.x,我有两个数据库表1)用户2)配置文件 profiles有一个名为bank_ac的字段 我试图从用户模型中保存它 我创建了表单输入,如 <?= $this->Form->create($user) ?> <?= $this->Form->control('profile.bank_ac'); ?> <?= $this->Form->end() ?> 调试后获得数据,如 [ 'name' => 'Jone'
<?= $this->Form->create($user) ?>
<?= $this->Form->control('profile.bank_ac'); ?>
<?= $this->Form->end() ?>
调试后获得数据,如
[
'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
字段,因此不允许在批量分配(修补)中使用该字段
将它添加到您的用户::$\u可访问的属性中,它应该可以工作:
protected $_accessible = [
// ...
'profile' => true,
];
另见
为了进一步了解,请调试已修补的$user
实体。更新了我的问题,谢谢。@NiloyRony取决于实体的构建方式(手动、使用用户数据等),以及您对创建实体的过程的信任程度。技术上,如果你认为实体创建过程是安全的(即用户不能分配你不希望他们能够在特定动作中保存的数据),那么你就不需要限制保存过程。因此,如果实体创建过程中的某些内容发生更改,则不需要的数据很容易滑入,因此您可能希望同时使用关联的
选项进行修补和保存,这样即使假定安全的实体不可信,保存也会受到限制。
protected $_accessible = [
// ...
'profile' => true,
];