0

私はCakephp挿入で立ち往生しています、これが私が持っているものです

-注文 HABTM アドレス

-アドレスモデル

Address モデルでの私の関連付けは次のとおりです。

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

1 つの新しい住所を持つ新しい顧客を保存/挿入したいので、以下の配列が機能すると考えました。

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' => ''
    )
)
)

機能しているのは、最初に Customer を保存してから以下の配列を使用するときだけです:

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' => ''
    )
)
)

しかし、まだアソシエーション テーブルがいっぱいではありません。Address テーブルにエントリを追加するだけです。

4

2 に答える 2

0

はい、両方で指定する必要があります:

住所モデル:

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'  
));
于 2012-12-08T14:57:29.993 に答える
0

HABTM関係でジョイント可能を指定しているので、命名規則の問題ではないかと思います。

Address または Customer モデルに保存していますか? Address モデルから呼び出す場合は、既に顧客がいるはずです。その場合は、次のように設定するだけです。

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

住所データを保存すると、テーブルに HABTM 関連付けが作成されます。

于 2012-12-08T13:42:14.303 に答える