2013-11-25 35 views
0

我試圖使用事務將我的數據存儲在空數據庫中。現在這對我不起作用。這是我的ERD:https://www.dropbox.com/s/pfakd7xplsvr7cc/db_erd.PNG使用HABTM在空數據庫中使用事務CakePHP

請注意,起初所有三個表都是空的。我下面的數組發送到數據庫:

array(
    'Product' => array(
     'slug' => 'c24b626d6701d3b07e30b233b989ff8811', 
     'product_name' => 'DAHLIA 5A', 
     'price_new' => '159.00', 
     'affiliate_url' => 'http://example.com/feed.xml', 
     'product_id_supplier' => 'c24b626d670133d3b07e30b2b989ff8811', 
     'supplier_id' => 'some_supplier', 
     'feedimport_id' => (int) 1 
    ), 
    'Image' => array(
     (int) 0 => array(
      'image' => 'product_image.JPG' 
     ) 
    ), 
    'Term' => array(
     'Term' => array(
      (int) 0 => array(
       'name' => 'Tommy Hilfiger' 
      ) 
     ) 
    ) 
) 

使用$這個 - >了getDataSource(); 。但它只是填充圖像和產品表。如果我查看日誌文件,它會嘗試從products_terms表中選擇,插入產品和圖像表後,並且課程不會收到任何迴應。然後停止......它也不嘗試插入術語表中。

現在,如果我看看這些教程:http://www.pabloleanomartinet.com/cakephp-2-x-saving-and-validating-a-habtm-relation-example/ 看起來我沒有做錯任何事情......但是如果我仔細觀察它看起來教程中的TAGS表已經填滿了......所以可能是這個問題?但我不知道如何在插入產品並使用交易將它們鏈接在一起之前先獲得術語ID。

任何人都這麼做?

回答

0

問題已解決。似乎需要填寫Terms表格,否則cakePHP不知道要連接哪個術語。

因此,正確的解決方案是首先檢查或Term是否存在,或者在Term表中插入Term,然後使用HABTM插入產品(使用插入數組中的Term的ID),這樣products_terms表也將填補。