我必须使用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。