複数のチェックボックスを結合テーブルに保存する方法を教えてください。
3 つのテーブルがあります。
- 顧客(ID、名前、住所)
- 商品(id,product_name,desc) すべての商品が入ります。
- Customers_Products (id,product_id,customer_id) <-(結合テーブル)
ステップ 1:
顧客は希望の製品(リンゴ、オレンジ、チェリーのチェックボックス)<Next>
を選択し、ボタン
をクリックします。
ステップ 2:
フォームに自分自身(名前、住所など) を記入します。<Submit>
ボタン
をクリックします
ステップ 3:
ステップ 2 の個人情報を Customers テーブルに保存し、ステップ 1 で選択した製品 ID を Customers_Products テーブルに保存します。個人情報と製品 ID は指定されたテーブルに保存されますが、顧客が複数の製品を選択した場合、製品 ID は保存されません。行を追加しますが、製品 ID フィールドは空です。
これが私の見解です:
<?php echo $this->Form->checkbox('CustomerProduct.product.', array('value' => '1', 'style' => 'float: left; display: inline')); ?>
<?php echo $this->Form->checkbox('CustomerProduct.product.', array('value' => '2', 'style' => 'float: left; display: inline')); ?>
<?php echo $this->Form->checkbox('CustomerProduct.product.', array('value' => '3', 'style' => 'float: left; display: inline')); ?>
<?php echo $this->Form->input('Customers.name', array('value'=>'Jon Toshmatov')); ?>
コントローラ:
$this->Prospect->saveAll($this->request->data);
モデル:
public $hasAndBelongsToMany = array(
'CustomerProduct' => array(
'className' => 'CustomerProduct',
'joinTable' => 'customers_products',
'foreignKey' => 'customer_id',
'associationForeignKey' => 'product_id',
'unique' => 'false',
'dependent' => false,
'conditions' => '',
'fields' => '',
'order' => '',
'limit' => '',
'offset' => '',
'exclusive' => '',
'finderQuery' => '',
'counterQuery' => ''
)
望ましい結果: 次の順序でデータを保存したい:
顧客テーブル: ID名 1 ジョン T Customers_Products *(結合テーブル)* id product_id customer_id 1 4 1 2 3 1 3 5 1