2016-08-14 25 views
0

我有以下功能:CakePHP的3.3.0不更新hasOne表

public function edit($id = null) 
{ 
    $resident = $this->Residents->get($id, [ 
     'contain' => [ 'ResidentGeneral' ] 
    ]); 
    if ($this->request->is(['patch', 'post', 'put'])) { 
     $resident = $this->Residents->patchEntity($resident, $this->request->data); 
     if ($this->Residents->save($resident)) { 
      $this->Flash->success(__('The resident has been saved.')); 
       return $this->redirect(['action' => 'index']); 
     } else { 
      $this->Flash->error(__('The resident could not be saved. Please, try again.')); 
     } 
    } 

    $titles = $this->Residents->ResidentGeneral->Titles->find('list', ['limit' => 200]); 
    $sexes = $this->Residents->ResidentGeneral->Sexes->find('list', ['limit' => 200]); 
    $maritalStatuses = $this->Residents->ResidentGeneral->MaritalStatuses->find('list', ['limit' => 200]); 
    $rooms = $this->Residents->ResidentGeneral->Rooms->find('list', ['limit' => 200]); 
    $nationalities = $this->Residents->ResidentGeneral->Nationalities->find('list', ['limit' => 200]); 
    $ethnicOrigins = $this->Residents->ResidentGeneral->EthnicOrigins->find('list', ['limit' => 200]); 

    $this->set(compact('resident', 'titles', 'sexes', 'maritalStatuses', 'rooms', 'nationalities', 'ethnicOrigins')); 
    $this->set('_serialize', ['resident']); 
} 

ADD功能是具有

 $resident = $this->Residents->get($id, [ 
     'contain' => [ 'ResidentGeneral' ] 
    ]); 

是代替

$resident = $this->Residents->newEntity(); 

和異常相同$ id = null從頂部丟失。

現在,add函數將正確地保存到數據庫,併爲居民提供一個問題的常規表格,但編輯不會更新,它們使用相同的表格,因此所有約定都被保留。

關於此的文檔指出,修補程序和保存都與關聯一起工作一層,即使如此添加也不工作,也因爲添加功能工作,這意味着所有模型都可以正常工作,但是這將不會更新表中的任何關聯記錄。

正如您可能看到大部分代碼已經過烘焙,所以這是框架的運行方式。

任何幫助都會很棒,因爲我離破碎的電腦只有一步之遙。

+0

我有節能問題協會(belongsToMany)也在3.3,回到了3.2.14和它的工作。我不知道爲什麼,相同的代碼。 –

+0

我在另一個開發人員的電腦上發現了相同的情況,他可以使用3.2.X進行編輯,但不能使用3.3.X,核心有可能出現問題嗎? – B1scuit

+0

剛試過一個全新的安裝,兩個表和一個hasOne之間,同樣的事情,沒有更新的內容,會引發github上的問題 – B1scuit

回答

2

它已經被固定在主分支,將其固定在CakePHP中3.3.1