Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 一对一关系是否未保存?_Php_Fuelphp_Fuelphp Orm - Fatal编程技术网

Php 一对一关系是否未保存?

Php 一对一关系是否未保存?,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

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

/controller.php

$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关系是如何建立的有关。