Php 一对一关系是否未保存?
我尝试执行以下操作,数组包含一些应该保存到时间线表中的数据,其余的保存到日历表中。但是,只有默认值或空数据被保存到日历中,而时间线被正确更新时,日历id字段被设置为0 /controller.phpPhp 一对一关系是否未保存?,php,fuelphp,fuelphp-orm,Php,Fuelphp,Fuelphp Orm,我尝试执行以下操作,数组包含一些应该保存到时间线表中的数据,其余的保存到日历表中。但是,只有默认值或空数据被保存到日历中,而时间线被正确更新时,日历id字段被设置为0 /controller.php $model = \Timeline\Model_Timeline::forge(); $model->calendar = \Timeline\Model_Calendar::forge(); $model->set($item); $model->save(); /model
$model = \Timeline\Model_Timeline::forge();
$model->calendar = \Timeline\Model_Calendar::forge();
$model->set($item);
$model->save();
/model/timeline.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,
)
);
/model/calendar.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,
)
);
}
我可以看到$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_id设置为0的原因。您在日历表上有新项目吗?假设这些变量是列的数组=>值,您可以直接执行
$model = \Timeline\Model_Timeline::forge($timeline_properties);
$model->calendar = \Timeline\Model_Calendar::forge($calendar_properties);
$model->save();
是的,或多或少我现在是怎么工作的。我为每个forge()函数设置了$item。我只是不确定这样做是否正确。我认为这更多地与我的ORM关系是如何建立的有关。