0

我需要将多个复选框保存到连接表的帮助。

有3张表:

  • 客户(身份证、姓名、地址)
  • Products (id,product_name,desc) 输入所有产品。
  • Customers_Products (id,product_id,customer_id) <-(连接表)

第 1 步:
客户选择所需的产品(复选框中的苹果、橙子、樱桃) 并单击<Next>按钮

第 2 步:
填写有关自己的表格(姓名、地址等)。 并点击<Submit>按钮

第 3 步:
我将第 2 步中的个人信息保存到客户表中,并将第 1 步中的选定产品 ID 保存到客户_产品表中。它确实将个人信息和产品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' => ''
    )

期望的结果: 我想按以下顺序保存数据:

客户表:
身份证名称
1 乔恩 T

客户_产品*(加入表)*
id product_id customer_id
1 4 1
2 3 1
3 5 1
4

1 回答 1

0

问题是如果通过 CakePHP formhelper 创建,每个复选框也会添加一个“隐藏”输入。添加此隐藏输入以确保复选框即使未选中也始终发送值(0 或 1)。

但是,在您的示例中,您正在创建 3 个具有相同“名称”的复选框,因此每个复选框都将覆盖以前的值。

最好的方法是使用 CakePHP formhelper 创建一个“多个”复选框;

echo $this->Form->input('Product', array('multiple' => 'checkbox'));

为了使其正常工作,应该有一个$productsviewVar,包含产品 ID 和标签;

在您的控制器内部:

public function some_action()
{
     // your code here

     $this->set('products', $this->Customer->Product->find('list'));
}

更多关于在此处保存 HABTM 数据的信息; http://book.cakephp.org/2.0/en/models/saving-your-data.html#saving-related-model-data-habtm

请注意 ,除非您为模型使用非标准名称,否则您的名称似乎hasAndBelongsToMany不正确;

怀疑你的关系是CustomerhasAndBelongsTo Product,不是CustomerProduct吗?

http://book.cakephp.org/2.0/en/models/associations-linking-models-together.html#hasandbelongstomany-habtm

于 2013-03-01T21:48:08.250 回答