CakePHP 3不保存hasOne关联
我有两种车型-CakePHP 3不保存hasOne关联,cakephp,cakephp-3.0,Cakephp,Cakephp 3.0,我有两种车型-汽车和汽车选项 CarshasOneCarOptions 如果用户要编辑汽车-他们还可以设置一些汽车选项并保存 与Cars相关的所有内容都可以保存,但是CarOptions不会保存。如果在保存之前调试Car对象,我会看到以下内容 Car: { "id": 3, "name": "Ford Mustang", "description": "some description", "city": "San Francisco", "state":
汽车
和汽车选项
Cars
hasOneCarOptions
如果用户要编辑汽车-他们还可以设置一些汽车选项并保存
与Cars
相关的所有内容都可以保存,但是CarOptions
不会保存。如果在保存之前调试Car
对象,我会看到以下内容
Car: {
"id": 3,
"name": "Ford Mustang",
"description": "some description",
"city": "San Francisco",
"state": "California",
"country": "USA",
"created": "2015-08-14T12:20:14-0500",
"CarOptions": {
"manual_transmission": "N"
}
}
我要保存的代码如下所示
$car = $this->Cars->findByName('Ford Mustang')->first();
$car = $this->Cars->patchEntity($car, $this->request->data);
$carOptions = $this->Cars->CarOptions->newEntity();
$carOptions->manual_transmission = 'N';
$car->CarOptions = $carOptions;
$this->Cars->save($car);
但是,不会创建或编辑CarOptions记录。我遗漏了什么?您没有正确遵守约定,请参阅 当保存hasOne关联时,ORM希望在关联名称的单数、下划线版本处有一个嵌套实体。[……] 因此,对于名为
CarOptions
的关联,要使用的属性应该是car\u option
还要注意的是,如果您想让用户选择选项及其值,那么像您正在做的那样对其进行硬编码并不是真正的方法,而是将其正确地传递到请求数据中,并让封送员在修补实体时进行“到实体”的转换
另见
- 您没有正确遵守约定,请参阅
当保存hasOne关联时,ORM希望在关联名称的单数、下划线版本处有一个嵌套实体。[……]
因此,对于名为
CarOptions
的关联,要使用的属性应该是car\u option
还要注意的是,如果您想让用户选择选项及其值,那么像您正在做的那样对其进行硬编码并不是真正的方法,而是将其正确地传递到请求数据中,并让封送员在修补实体时进行“到实体”的转换
另见