直接保存到HABTM表


CakeSaving directly to HABTM table

我试图将数据直接保存到HABTM表中

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

我的$this->data数组现在看起来是这样的,在设置了' owned '字段之后。

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

你还没问问题。你的问题是你试图拯救却没有成功吗?您正在尝试插入新记录还是更新新记录?

如果只是插入,请尝试这样做:

$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);

Scoot Harwell在Edit中生成的数组可以用来创建saveAll,但是执行该操作的代码必须是:

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

我也有同样的问题,过了很多次才发现。