FuelPHP ORM一对一关系未保存


FuelPHP ORM one to one relation is not saving?

我正在尝试执行以下操作,数组中包含一些数据,这些数据应该保存到时间轴表中,其余数据则保存到日历表中。然而,在时间线正确更新的同时,只有默认值或空数据会保存到日历中,calendar_id字段设置为0。

/controller.php

$model = 'Timeline'Model_Timeline::forge();
$model->calendar = 'Timeline'Model_Calendar::forge();
$model->set($item);
$model->save();

/型号/时间线.php

namespace Timeline;
class Model_Timeline extends 'Orm'Model
{
    protected static $_properties = array(
        'id',
        'user_id' => array(
            'data_type' => 'int',
            'form' => array('type' => false),
        ),
        'calendar_id' => array(
            'data_type' => 'int',
            'form' => array('type' => false),
            'default' => '0'
        ),
        'created_at' => array(
            'data_type' => 'int',
            'form' => array('type' => false),
            'default' => '0'
        ),
        'updated_at' => array(
            'data_type' => 'int',
            'form' => array('type' => false),
            'default' => '0'
        )
    );
    protected static $_has_one = array(
        'calendar' => array(
            'key_from' => 'calendar_id',
            'model_to' => 'Timeline''Model_Calendar',
            'key_to' => 'id',
            'cascade_save' => true,
            'cascade_delete' => true,
        )
    );

/型号/日历.php

namespace Timeline;
class Model_Calendar extends 'Orm'Model
{
    protected static $_properties = array(
        'id',
        'start',
        'end',
        'recurrenceRule',
        'recurrenceException',
        'isAllDay',
        'created_at',           
        'updated_at'
    );
    protected static $_belongs_to = array(
        'calendar' => array(
            'key_from' => 'id',
            'model_to' => 'Timeline''Model_Timeline',
            'key_to' => 'calendar_id',
            'cascade_save' => true,
            'cascade_delete' => true,
        )
    );
}

假设这些变量是列=>值的数组,则可以直接执行

$model = 'Timeline'Model_Timeline::forge($timeline_properties);
$model->calendar = 'Timeline'Model_Calendar::forge($calendar_properties);
$model->save();

我能看到$item变量吗。

我认为你需要做这样的事情:

$model = 'Timeline'Model_Timeline::forge();
$model->calendar = 'Timeline'Model_Calendar::forge();
$model->calendar->set($calendar_properties);
$model->set($timeline_properties);
$model->save();

因为您只将一些属性设置为Timeline,而Calendar项为空,这就是为什么您将Calendar_id设置为0的原因。日历表上有新项目吗?