2015-06-12 131 views
0

數據的CakePHP:HABTM創建的所有記錄的CakePHP

Array (
    [Table_1] => Array (
     [name] => Test 
    ) 
    [Table_2] => Array (
     [0] => Array (
      [name] => Test 
     ) 
     [1] => Array (
      [name] => Test 
     ) 
    ) 
) 

SQL:

CREATE TABLE Table_1 (
    id INT AUTO_INCREMENT, 
    name VARCHAR (10), 
    PRIMARY KEY (id) 
) 
CREATE TABLE Table_2 (
    id INT AUTO_INCREMENT, 
    name VARCHAR (10), 
    PRIMARY KEY (id) 
) 
CREATE TABLE Table_1_2 (
    id INT AUTO_INCREMENT, 
    table1_id INT, 
    table2_id INT, 
    PRIMARY KEY (id), 
    FOREIGN KEY (table1_id) REFERENCES Table_1(id), 
    FOREIGN KEY (table2_id) REFERENCES Table_2(id) 
) 

的形式予以登記三個表有描述如何做到這一點CakePHP中,仍然正常它們關聯?我嘗試了不同的方式,但不能。

+1

您可以分享您嘗試過的一種或多種方式的代碼嗎? – lenz

+0

使用了Table1-> saveAll,沒有工作,不知道數據格式是正確的還是什麼。 一次使用保存在模型上,但是一旦進入HABTM表格就無法繼續。 在數據結構的兩個和修改中使用的各種參數中。 – paulorwd

+0

嗨,歡迎來到Stack Overflow。在這裏,我們希望你向我們展示你的嘗試。如果你已經嘗試了幾種方法,向我們展示迄今爲止最好的(即使它不工作)。不要把代碼放在註釋中(代碼格式很糟糕),編輯你的問題並在那裏添加它。向我們展示實際代碼,而不僅僅是口頭描述 - 我們無法調試口頭描述。 :) –

回答

0

這裏有一個CakePHP的HABTM的好文章:http://patisserie.keensoftware.com/en/pages/how-to-save-habtm-data-in-cakephp

最重要的是:

關聯現有的記錄:

array(
    'Foo' => array(
     'id' => '...', 
     ... 
    ), 
    'Bar' => array(
     'Bar' => array(
      [0] => 'id1', // id of an existing Bar 
      [1] => 'id2', // id of another existing Bar 
      ... 
     ) 
    ) 
) 

關聯的新記錄:

array(
    [0] => array(
     [Foo] => array(
      [id] => ... 
     ), 
     [Bar] => array(
      [name] => ... 
     ) 
    ), 
    [1] => array(
     [Foo] => array(
      [id] => ... 
     ), 
     [Bar] => array(
      [name] => ... 
      ) 
     ) 
) 

有更多一點在關於聯合關係的文章中的解決方法。

+0

但是不存在記錄,是新記錄,即爲Table1和Table2創建一個記錄,另一個用於建立關聯。 – paulorwd

+0

好吧,這是第二個例子......它創建新記錄並將它們連接起來。究竟是什麼問題? – Skatch