Orm CAKEPHP3在联接表中保存额外数据
需要修改Orm CAKEPHP3在联接表中保存额外数据,orm,save,cakephp-3.0,Orm,Save,Cakephp 3.0,需要修改$this->request data中的数据,因此我无法直接使用表单填充所有表。在我添加“state”列之前,所有代码都已经过了烘焙 我正在从$this->request data获取ID,并相应地修改它: $this->request->data['parts']['u id'][]=。。。。 其余部分按照手册执行: $order=$this->Orders->newEntity(); $this->Orders->patchEntity($order$this->request-
$this->request data
中的数据,因此我无法直接使用表单填充所有表。在我添加“state”列之前,所有代码都已经过了烘焙
我正在从$this->request data
获取ID,并相应地修改它:
$this->request->data['parts']['u id'][]=。。。。
其余部分按照手册执行:
$order=$this->Orders->newEntity();
$this->Orders->patchEntity($order$this->request->data);
$this->Orders->save($order);
我无法修改传入数据以将其保存到状态列
编辑:
“状态”字段仍为空值
订单稳定
订单稳定
插入:
我必须将aslo SetsModel包括在关联模型中 $this->request->data['parts']['u id']允许您连接表,但不能以这种方式添加数据。 为此,您的$this->request->data['parts']结构必须如下所示:
'parts' => [
0 => [
'id'=> 1,
'_joinData' => [
'state' => 'exampleSate'
]
]
]
确保“部件”数组中不再有“\u id”数组,否则将无法将数据保存到联接表中。
“id”字段对应于相关零件的id。要设置它,请执行以下操作:
$this->request->data['parts'][0]['id'] = <idOfTheConcernedPart>;
最后,您需要告诉cakephp您正在通过向patchEntity和save方法添加一些配置来保存一些_joinData:
$this->Orders->patchEntity(
$order,
$this->request->data,
['associated' => ['Parts._joinData']]
);
$this->Orders->save(
$order,
['associated' => ['Parts._joinData']]
);
我希望有帮助,
干杯。我已经编辑了主要问题,因为我仍然没有得到预期的结果。您忘记了输入id字段:$this->request->data['parts'][0]['id']=;谢谢你说得更清楚。我发现,$this->request->数据格式不正确(因此无法填充state列)。再次感谢。
$order = $this->Orders->newEntity();
$order->status = 'new';
$order->user_id = $this->Auth->user('id');
$this->request->data['parts'][0]['_joinData']['state'] = "whatever";
$this->Orders->patchEntity(
$order,
$this->request->data,
['associated' => ['Sets','Parts._joinData']]
);
$this->Orders->save(
$order,
['associated' => ['Sets','Parts._joinData']]
);
'parts' => [
0 => [
'id'=> 1,
'_joinData' => [
'state' => 'exampleSate'
]
]
]
$this->request->data['parts'][0]['id'] = <idOfTheConcernedPart>;
$this->request->data['parts'][0]['_joinData']['state'] = "whatever";
$this->Orders->patchEntity(
$order,
$this->request->data,
['associated' => ['Parts._joinData']]
);
$this->Orders->save(
$order,
['associated' => ['Parts._joinData']]
);