Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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
Mysql CakePHP 3-使用正确的id保存关联数据_Mysql_Cakephp 3.0 - Fatal编程技术网

Mysql CakePHP 3-使用正确的id保存关联数据

Mysql CakePHP 3-使用正确的id保存关联数据,mysql,cakephp-3.0,Mysql,Cakephp 3.0,我是CakePHP的新手,正在编写活动日历。事件可以是单日事件,也可以是多天事件,因此我创建了一个事件表和一个日期表。保存事件时,日期会按预期保存在dates表中,但event_id字段始终保存为0,而不是实际的事件id 我认为事件和日期表之间的关系设置正确。 这是我为DatesTable准备的: $this->table('dates'); $this->displayField('id'); $this->primaryKey('id');

我是CakePHP的新手,正在编写活动日历。事件可以是单日事件,也可以是多天事件,因此我创建了一个事件表和一个日期表。保存事件时,日期会按预期保存在dates表中,但event_id字段始终保存为0,而不是实际的事件id

我认为事件和日期表之间的关系设置正确。
这是我为DatesTable准备的:

    $this->table('dates');
    $this->displayField('id');
    $this->primaryKey('id');

    $this->addBehavior('Timestamp');

    $this->belongsTo('Events', [
        'foreignKey' => 'event_id'
    ]);
这是我的EventsTable:

    $this->table('events');
    $this->primaryKey('id');

    $this->addBehavior('Timestamp');

    $this->belongsTo('Dates', [
        'foreignKey' => 'event_id',
        'joinType' => 'INNER'
    ]);
这是我的EventsController中的代码(WetKit是我们的插件之一):


如何获取要保存在Dates表中的事件id

事件稳定端的关联是错误的,它应该是一个
hasMany
1:n
)关联,或者是一个
hasOne
1:1
)关联。考虑到你说的是几天,我想你是在寻找前者

另见


事件稳定方面的关联是错误的,它应该是
hasMany
1:n
)关联或
hasOne
1:1
)关联。考虑到你说的是几天,我想你是在寻找前者

另见


我将关系更改为hasMany,但现在它根本无法保存日期表中的任何内容。@1979年7月,如果看不到完整的图片(即关联设置和理想情况下您试图保存的数据),我无法真正帮助您处理“不工作”,我只能在黑暗中拍摄。这很好。我真的不知道如何解决这个问题,但你给了我一些阅读的东西(将表链接在一起)。我会更仔细地查找它,希望能找到答案。谢谢我将关系更改为hasMany,但现在它根本无法在日期表中保存任何内容。@Juls79我无法在看不到全貌的情况下真正帮助您处理“不工作”,即关联设置和理想情况下您试图保存的数据,我所能做的就是在黑暗中拍摄。这很好。我真的不知道如何解决这个问题,但你给了我一些阅读的东西(将表链接在一起)。我会更仔细地查找它,希望能找到答案。谢谢
   $event = $this->Events->newEntity();

    if ($this->request->is('post')) {
        $event = $this->Events->patchEntity($event, $this->request->data, [
            'associated' => 'dates'
        ]);

        if ($this->Events->save($event)) {
            $this->Flash->success(__('The form has been saved.'));
        } else
            $this->WetKit->flashError(__('The form could not be saved because error(s) were found.'), $event);
    }