在CakePHP中从与PatchEntity关联的表中删除记录
我有一个CakePHP模型,其中一个工作有很多员工,一个员工属于一个工作。我用来编辑作业和员工的视图是作业视图。以下是来自我的作业控制器的代码:在CakePHP中从与PatchEntity关联的表中删除记录,cakephp,orm,associations,cakephp-3.0,Cakephp,Orm,Associations,Cakephp 3.0,我有一个CakePHP模型,其中一个工作有很多员工,一个员工属于一个工作。我用来编辑作业和员工的视图是作业视图。以下是来自我的作业控制器的代码: $job = $this->Jobs->get($id, [ 'contain' => ['Employees'] ]); if ($this->request->is(['patch', 'post', 'put'])) { $req = $this->req
$job = $this->Jobs->get($id, [
'contain' => ['Employees']
]);
if ($this->request->is(['patch', 'post', 'put'])) {
$req = $this->request->data;
$job = $this->Jobs->patchEntity($job, $req, [
'validate' => false,
'associated' => ['Employees']
]);
$saveResult = $this->Jobs->save($job, [
'validate' => false,
'associated' => ['Employees']
]);
$this->request->数据如下所示:
'employees' =>[
0 => [
'id' => 1,
... etc ...
当我添加employees时,$this->request->data有更多的数组元素,补丁程序将新记录添加到employees表中
当我删除员工时,$this->request->data的数组元素更少。但是补丁不会删除任何记录。(当数据返回时,我正在用array_值修复数组顺序)
当请求中记录较少时,是否有办法让修补程序删除记录
如果没有,最好的删除方法是什么?我不知道我是否完全得到了你的问题/想要的结果,但是从你的台词中 有没有一种方法可以让补丁在有记录时删除记录 请求中的记录更少 我读它是因为您想在当前post请求中用新的关联数据替换“旧的”关联数据 hasMany关联的默认值为
'saveStrategy'=>'append'
。(我想从3.1版开始)
您可以将saveStrategy
更改为replace
如下:
$this->hasMany('Employees', [
'className' => 'Employees',
'foreignKey' => 'employee_id',
'saveStrategy' => 'replace'
]);
当
saveStrategy
设置为replace
时,只有当前post/PATCH实体中的关联数据将在保存时与当前模型记录关联。现有链接关联数据的外键将设置为空。我不知道是否完全得到了您的问题/想要的结果,但是从您的行中
有没有一种方法可以让补丁在有记录时删除记录
请求中的记录更少
我读它是因为您想在当前post请求中用新的关联数据替换“旧的”关联数据
hasMany关联的默认值为'saveStrategy'=>'append'
。(我想从3.1版开始)
您可以将saveStrategy
更改为replace
如下:
$this->hasMany('Employees', [
'className' => 'Employees',
'foreignKey' => 'employee_id',
'saveStrategy' => 'replace'
]);
当
saveStrategy
设置为replace
时,只有当前post/PATCH实体中的关联数据将在保存时与当前模型记录关联。现有链接关联数据的外键将设置为空。您的员工关联配置是什么样子的?@swmcdonnell,您是否找到了此问题的解决方案?请尽快让我知道您的员工
关联配置是什么样子的?@swmcdonnell,您是否找到了此问题的解决方案?请尽快告诉我