如何直接插入数据并仅插入HABTM表,

时间:2015-03-10 12:57:55

标签: cakephp e-commerce has-and-belongs-to-many

我有1个类别表和第二个功能表,并且它们之间的关联是cakephp中的HABTM

现在我不确切知道如何在categories_features表中插入值。 之前我使用过HABTM,但是当我使用“saveAll()”方法创建一个项目时,我在此表中插入值。 但在这种情况下,我在下拉菜单中的类别和复选框形式的功能时有分页。

我试图创建新的模型categoriesFeature来解决这个问题,但是当我以这种形式提交数据时,数据

Array
(
    [CategoriesFeature] => Array
        (
            [Category_id] => 2
            [feature_id] => Array
                (
                    [0] => 1
                    [1] => 2
                )

        )

)

所以我得到错误

"Array to string conversion [CORE\Cake\Model\Datasource\DboSource.php, line 1009]"  
Column not found: 1054 Unknown column 'Array' in 'field list'
"INSERT INTO `ecomerce`.`categories_features` (`feature_id`) VALUES (Array)"

如果我使用错误的方法,请指导我。

查看在categories_features表中添加数据的代码

 <?php echo $this->Form->create('CategoriesFeature', array('id' => 'cf'));?>
    <fieldset>
    <legend>Feature Add Form</legend>
    <?php
        echo $this->Form->input('Category_id',array(
                'data-rel' => 'chosen',
                'placeholder' => 'Select Category'
        ));

        $keys= array();
        $values =array();


 echo "<h2> Select Features for above selected Category </h2>";
echo $this->Form->input('feature_id',
        array('label'=>'',
        'type'=>'select',
        'multiple'=>'checkbox',
        'options'=>$features)
        );


        echo $this->Form->submit();
    ?>   
    </fieldset>

表格结构

id | category_id | FEATURE_ID

1 个答案:

答案 0 :(得分:0)

如果您使用saveAll方法,则需要调整数组:

Array
(
    [CategoriesFeature] => Array
        0 => array(
            [Category_id] => 2
            [feature_id] => 1

        ),
        1 => array(
            [Category_id] => 2
            [feature_id] => 2

        )
)

您应该使用saveMany:按Model::saveMany(array $data = null, array $options = array())

$data = array(
    array('Article' => array('title' => 'title 1')),
    array('Article' => array('title' => 'title 2')),
);