2015-08-29 71 views
0

我有兩個型號 - CarsCarOptionsCakePHP的3個不節能hasOne協會

Cars hasOne CarOptions

如果用戶要編輯汽車 - 他們還可以設置一些CarOptions和保存

相關的一切到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記錄。我錯過了什麼?

回答

3

你沒有正確遵循的約定,請參見

Cookbook > Database Access & ORM > Saving Data > Saving HasOne Associations

當保存hasOne協會,ORM在單數只需要一個嵌套的實體,強調該協會名稱的版本。 [...]

因此,對於名爲CarOptions的關聯,要使用的屬性應該是car_option

另外請注意,如果你想讓用戶選擇選項和它的值,像你這樣做的硬編碼是不是真的要走的路,而是在請求數據中正確地傳遞它,讓編組人員在修補實體時執行「實體」轉換。

又見

+0

謝謝 - 這工作。硬編碼僅用於測試目的 – ChicagoSky