Laravel / Eloquent - 外键始终为NULL

时间:2017-04-12 11:12:49

标签: php laravel octobercms

我必须使用Model类型的类, WptModel CacheModel

use Model;

class CacheModel extends Model {

    use \October\Rain\Database\Traits\Validation;

    public $timestamps = false;

    public $rules = [];

    public $table = 'cache';


    public $belongsTo = [
        'WptModel' => [ 'Models\WptModel' ]
    ];

    public $incrementing = FALSE;

}

use Model;

class WptModel extends Model {

    use \October\Rain\Database\Traits\Validation;

    public $timestamps = false;

    public $rules = [];

    public $table = 'wpt';

    public $hasOne = [
        'CacheModel' => [ 'Models\CacheModel' ]
    ];

    public $belongsTo = [
        'GpxModel' => [ 'Models\GpxModel' ]
    ];

    public $incrementing = FALSE;

}

对于这两个模型,我使用 firstOrNew 来构建它们。

$wptmodel = WptModel::firstOrNew($values);
$cachemodel = CacheModel::firstOrNew($values);

这就像一个魅力。但是当我尝试在 $ wptmodel 中存储 $ cachemodel 并保存 $ gpxmodel 时:

$wptmodel->CacheModel = $cachemodel;
$gpxmodel->WptModel = $wptmodel;
$gpxmodel->save();

出现以下错误消息:

"SQLSTATE[23000]: Integrity constraint violation: 1048 Column
'wpt_model_id' cannot be null (SQL: update 
cache` set `wpt_model_id` =  where cache`.`wpt_model_id`
= 978a1287-3cad-4580-9c95-8ee2ed13b836 and 
cache`.`wpt_model_id` is not null)" on line 
662 of laravel/framework/src/Illuminate/Database
/Connection.php

我不能理解的另一件事是第一次进程是有效的(这意味着我能够在表缓存中插入一行)。当我第二次执行这些语句时,错误显示出来(更新无法工作)。如果我查看相应的表,看起来每件事都在那里。所有列都有其值。绝对没有NULL值。所以我不明白为什么Laravel说_wpt_model_id_是NULL。

提前感谢您的帮助。

FW。

0 个答案:

没有答案