我正在使用Eloquent作为DBAL/Active Record重构一个旧应用程序,一切都很顺利,但当我在模型中添加"protected$dates"时,我出现了一个严重的错误:
Warning: array_map(): An error occurred while invoking the map callback in [CUT]vendorilluminatesupportCollection.php on line 1024
Exception: A four digit year could not be found Data missing
这是我的型号:
class dbPazienti extends IlluminateDatabaseEloquentModel
{
public $timestamps = false;
protected $table = 'pazienti';
protected $primaryKey = 'pkid';
protected $dates = ['DataNascita','Richiamareil','deleted_at'];
protected $fillable = ['Titolo','Nome','SecondoNome','Cognome','CodiceFiscale','Indirizzo','Cap','Localita','Provincia','Telefono','Email','Sesso','DataNascita','ComuneNascita','ProvinciaNascita','MedicoCurante','Note','Richiamareil'];
public function ecografie()
{
return $this->hasMany('dbEcografie', 'fk_idPaziente', 'pkid');
}
public function scopeMedicoDiBase($query, $mdb=0)
{
return $query->with(['ecografie' => function ($query) {
$query->where('mdb', '=', $mdb);
}]);
}
}
如果我评论这一行,我没有得到任何错误:
protected $dates = ['DataNascita','Richiamareil','deleted_at'];
但当然,这些字段不会被视为日期
以下是数据库中这些字段的值:
- 1962-09-20 00:00:00
- 0000-00-00 00:00:00
- NULL
- 2015年12月28日
我该怎么解决这个问题?我做错什么了吗?
提前感谢
我不熟悉这种语言,但我首先要考虑的是该语言是否可以将Null视为日期,以及是否可以将0000-00-00 00:00:00视为日期。
如果你不确定你可以花一些时间在谷歌上搜索,或者一种快速直观的方法是尝试使用Null,但使用0000-00-00 00:00:00,反之亦然,然后尝试不使用任何一种。
如果你在这两个错误中只有一个出现的情况下出现错误,那就是你的问题。如果你在其中一个存在的情况下得到错误,那么它们都是问题。如果你在两人都不在场的情况下都犯了错误,那么还有其他事情在发生,但嘿,你累了,也许在这个过程中学到了一些东西。