2014-01-07 41 views
1

使用CakePHP,我有事件和人員。我想在保存新事件時將許多現有人員分配給我創建的事件。我正在選擇使用複選框的人員。保存許多現有記錄和一個新記錄之間的關係

我的數據是這樣的:

data[Event][name]:Test 4 
data[Event][event_type_id]:1 
data[EventPerson][person_id]: 
data[EventPerson][person_id][]:65 
data[EventPerson][person_id][]:72 
data[EventPerson][person_id][]:67 

我有EventPerson模型,並HABTM關係到對方,以及一個events_people表和模型建立,以及那些設置正確。我試過$this->Event->saveAssociated$this->Event->saveAll。每個人都會用正確的信息保存事件記錄,既不保存與人的關係。

人將總是已存在事件保存時。我覺得我錯過了一些明顯的東西,但是我幾個小時都在傷腦筋,結果沒有任何變化。

試圖

控制器

$this->Event->create(); 
    if ($this->Event->save($this->request->data)) { 
     $this->Session->setFlash(__('The event has been saved')); 
     return $this->redirect... 
    } 
$people= $this->FestivalPerson->find('all', 
    array(
     "Person.name", 
     "conditions" => array(
      "festival_id" => $this->request->query["festival_id"] 
     ), 
     "order" => "Person.name ASC" 
    ) 
); 
$this->set("eventPeople", Set::combine($people, '{n}.Person.id', '{n}.Person.name')); 

查看:

echo $this->Form->input('EventPerson', array('multiple' => 'checkbox')); 

數據:

data[Event][EventPerson]: 
data[Event][EventPerson][]:50 
data[Event][EventPerson][]:65 
data[Event][EventPerson][]:71 

這看起來LIK e它與每個示例的結構相匹配,並且應妥善保存,但我的events_people表仍爲空。沒有任何錯誤從PHP/MySQL出來。

+0

@ AD7six增加了更多信息。這是控制器/視圖的相關部分,它根據通過的節日標識抓取人員列表(我在該節日創建活動時列出與節日相關的人員,只有與節日有關的人員將在事件)。 –

+0

這不是試圖保存HABTM關係的正確表單/數據結構 - 因此它不起作用。 – AD7six

+0

@ AD7six我目前無法嘗試J.D.的答案,但我相信你對錯誤的數據結構是正確的。有沒有正確的方法來創建我失蹤的表單元素?我寧願不手動操作數據。 –

回答

1

形成你的數據是這樣

data[Event][name]:Test 4 
data[Event][event_type_id]:1 
data[EventPerson][0][person_id]: 
data[EventPerson][1][person_id][]:65 
data[EventPerson][2][person_id][]:72 
data[EventPerson][2][person_id][]:67 

或按照這篇文章:http://patisserie.keensoftware.com/en/pages/how-to-save-habtm-data-in-cakephp

它說明了如何編寫自定義代碼在CakePHP的數據數組,我相信有一個類似的例子還有

+0

我會試試看,並回復您的感謝! –

+0

該代碼沒有做問題的問題。 – AD7six

相關問題