Cakephp - 直接保存到HABTM表

时间:2011-12-04 00:49:06

标签: php cakephp

我正在尝试将数据直接保存到HABTM表products_students

我这样做是因为此表中有一个字段需要在我的控制器中手动设置。

在设置'欠'字段后,

我的$ this->数据数组目前看起来像这样。

Array
(
[OfferingsStudent] => Array
    (
        [OfferingsStudent] => Array
            (
                [0] => Array
                    (
                        [offering_id] => 35
                        [owing] => 209.00
                        [student_id] => 31
                    )

            )

    )

)

表单允许多个选择,因此我必须能够将多个记录保存到HABTM表中。

我的保存声明:$this->Student->OfferingsStudent->save($this->data)

问题是记录没有添加到表中。我必须能够通过单个表单提交将多个记录添加到表中。

我必须补充说正在创建记录,但所有字段最终都是零。

编辑:

更改了数组以尝试提交的解决方案,但仍然没有运气。

$ this->数据数组:

Array
(
[OfferingStudent] => Array
    (
        [0] => Array
            (
                [offering_id] => 35
                [owing] => 209.00
                [student_id] => 31
            )

    )

)

2 个答案:

答案 0 :(得分:1)

你没有问过一个问题。你试图保存的问题不起作用吗?您是要插入新记录还是更新新记录?

如果只是插入,请尝试改为:

$data = array(
    [offering_id] => 35
    [owing] => 209.00
    [student_id] => 31
);

$this->OfferingsStudent->save($data);

这将直接保存到表中。您无需为此创建模型。

修改

添加多个:

$data = array(
    'OfferingStudent' => array(
        array(
            [offering_id] => 35
            [owing] => 209.00
            [student_id] => 31
        ),
        array(
            [offering_id] => 32
            [owing] => 100
            [student_id] => 30
        )
    )
);

$this->OfferingsStudent->saveAll($data);

答案 1 :(得分:0)

Scoot Harwell在Edit中生成的数组很适合制作saveAll,但执行操作的代码必须是:

$this->OfferingsStudent->saveAll($data['OfferingStudent']);

我遇到同样的问题,经过很多次后终于找到了。