簡體   English   中英

CakePHP和HABTM插入/保存不起作用

[英]CakePHP and HABTM insert/save doesn't work

我被卡在Cakephp插件中,這是我所擁有的

-訂購HABTM地址

-地址模型

這是我在地址模型中的關聯:

public $hasAndBelongsToMany = array(
    'Address' => array(
        'className' => 'Address',
        'joinTable' => 'address_customers',
        'foreignKey' => 'customer_id',
        'associationForeignKey' => 'address_id'  
    )
);

我想用一個新地址保存/插入一個新客戶,所以,我認為下面的數組可以工作:

array(
'Customer' => array(
    'nom' => 'Khiami',
    'prenom' => 'TEST',
    'tel' => '0945454545',
    'ptel' => '',
    'commentaire' => '',
    'email' => '',
    'anniversaire' => array(
        'day' => '08',
        'month' => '12',
        'year' => '2012'
    ),
    'createdFrom' => 's'
),
'Address' => array(
    (int) 0 => array(
        'adresse' => 'ADDR TEST',
        'cp_id' => '1',
        'etage' => '',
        'residence' => '',
        'batiment' => '',
        'appartement' => '',
        'type' => 'l',
        'code_sonette' => '',
        'code_portail' => '',
        'code_batiment' => '',
        'code_asc' => ''
    )
)
)

唯一有效的是當我先保存客戶然后使用下面的數組時:

array(
(int) 0 => array(
    'Customer' => array(
        'customer_id' => '394'
    ),
    'Address' => array(
        'adresse' => 'ADDR TEST',
        'cp_id' => '1',
        'etage' => '',
        'residence' => '',
        'batiment' => '',
        'appartement' => '',
        'type' => 'l',
        'code_sonette' => '',
        'code_portail' => '',
        'code_batiment' => '',
        'code_asc' => ''
    )
)
)

但是,我仍然沒有填寫關聯表 它僅在地址表中添加一個條目。

由於您在HABTM關系中指定了可連接對象,因此我懷疑其命名約定問題。

您要保存“地址”或“客戶”模型嗎? 因為如果您從Address模型調用它,我想應該已經有一個客戶,在這種情況下,您只需要設置:

$this->request->data['Customer']['Customer'] = $customer_id; 

並保存地址數據,它應該在表中創建HABTM關聯。

是的,您應該在兩者中都指定它:

地址模型:

public $hasAndBelongsToMany = array(
   'Customer' => array(
       'className' => 'Customer',
       'joinTable' => 'address_customers',
       'foreignKey' => 'address_id',
       'associationForeignKey' => 'customer_id'  
));

客戶模型:

 public $hasAndBelongsToMany = array(
   'Address' => array(
      'className' => 'Address',
      'joinTable' => 'address_customers',
      'foreignKey' => 'customer_id',
      'associationForeignKey' => 'address_id'  
));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM