saveAll()在beforeSave中创建时不保存关联数据

时间:2013-11-02 03:47:36

标签: php cakephp save associations cakephp-2.4

以下是关联,保存调用和转到保存的数据。它为UPDATE生成Event查询,但没有生成任何查询来保存关联的EventInstance

EventInstance数据是在事件的beforeSave()中创建的。

它说它保存得很好 - 没有验证错误......等等。而且无论如何我在EventInstance模型上都没有验证数组。我也检查过,我的表没有任何问题,因为字段不允许null ...等。 - 我通过将所有内容设置为allow null进行测试。

我不知道 - 这应该是这么简单 - 我之前做过500次,但对于这一次,我显然错过了一些东西。

// Event model --------------------------
public $hasMany = array(
    'EventInstance' => array(
        'dependent' => true,
        'order'     => 'start ASC',
    ),
    ...

// Save call in Event model -------------
    $this->saveAll($data);

// $data ------------------------- 
'Event' => array(
    'id' => 'xxxxxxxx-65b4-4a75-ba4a-xxxxxxxxxxxx',
    'repeat_type' => '1',
    'repeat_interval' => '2',
    'repeat_weekdays' => 'ns',
    'repeat_on' => '1',
    'repeat_on_weekday' => '',
    'repeat_on_day' => '1',
    'repeat_end' => '',
    'timezone' => 'America/New_York',
    'times' => '',
    'modified' => '2013-11-02 01:07:27',
    'start' => '2013-11-03 01:36:00',
    'end' => '2013-11-10 05:36:00',
    'start_utc' => '2013-11-03 05:36:00',
    'end_utc' => '2013-11-10 10:36:00'
),
'EventInstance' => array(
    (int) 0 => array(
        'start' => '2013-11-05 01:11:00',
        'end' => '2013-11-05 05:36:00'
    ),
    (int) 1 => array(
        'start' => '2013-11-07 01:11:00',
        'end' => '2013-11-07 05:36:00'
    ),
    (int) 2 => array(
        'start' => '2013-11-09 01:11:00',
        'end' => '2013-11-09 05:36:00'
    ),
    (int) 3 => array(
        'start' => '2013-11-11 01:11:00',
        'end' => '2013-11-11 05:36:00'
    )
)

1 个答案:

答案 0 :(得分:3)

事实证明,当saveAll()添加新的关联数据时,您在调用beforeSave()时保存关联数据的触发器已经过去了。

所以 - 我刚刚将beforeSave()更改为beforeValidate() s,它确实有效。