Laravel:Carbon.php 第 425 行中的 InvalidArgumentException:数据丢失
Laravel : InvalidArgumentException in Carbon.php line 425: Data missing
当我运行系统时,存在这样的错误:
InvalidArgumentException in Carbon.php line 425: Data missing
in Carbon.php line 425
at Carbon::createFromFormat('Y-m-d H:i:s', '10-12-2016') in Model.php line 2990
at Model->asDateTime('10-12-2016') in Model.php line 2944
at Model->fromDateTime('10-12-2016') in Model.php line 2872
at Model->setAttribute('tglkop', '10-12-2016') in Model.php line 442
而我的模型是这样的:
<?php
namespace App\Models;
use Eloquent as Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class P3 extends Model
{
use SoftDeletes;
public $table = 'p3_s';
protected $dateFormat = 'Y-m-d';
protected $dates = ['deleted_at', 'tglkop', 'tglp3'];
public $fillable = [
'id_pagu',
'id_p3',
'kdbulan',
'thang',
'nokop',
'tglkop',
'tglp3'
];
protected $casts = [
'id_pagu' => 'string',
'id_p3' => 'string',
'kdbulan' => 'string',
'thang' => 'string',
'nokop' => 'string'
];
public static $rules = [
'id_pagu' => 'required',
'id_p3' => 'required',
'kdbulan' => 'required',
'thang' => 'required',
'nokop' => 'required',
'tglkop' => 'required',
'tglp3' => 'required',
];
}
我的table是这样的:
id, int(10)
id_pagu, varchar(18)
id_p3, varchar(18)
kdbulan, varchar(2)
thang, varchar(4)
nokop, varchar(10)
tglkop, date
tglp3, date
created_at, timestamp
updated_at, timestamp
deleted_at, timestamp
我在 Whosebug 和 laravel 文档中阅读了一些教程,但我仍然对实现它感到困惑
有什么办法可以解决我的问题吗?
只需从 $casts
数组中删除 'tglkop', 'tglp3'
,然后将其添加到 '$dates'
数组。这些属性将自动转换为 Carbon
个实例
更新
我猜你的数据库列 tglkop
和 tglp3
有 DATE
类型而不是 DATETIME
。
这个错误
Carbon::createFromFormat('Y-m-d H:i:s', '10-12-2016') in blah blah blah
说 Carbon
期望日期格式为 Y-m-d H:i:s
但你给出的日期格式为 d-m-Y
(10-12-2016
)
解决方案 1:
将这些列的类型更改为 DATETIME
解决方案 2:
将其添加到您的模型中
protected $dateFormat = 'Y-m-d'; // this is expected format for `MySQL` `DATE` type field
更新 2
我认为您试图在数据库中创建行。你想传递什么数据?我认为您输入的 tglkop
和 tglp3
字段格式错误。
我在 AWS Elastic Beanstalk 环境中部署 Laravel 应用程序时遇到了同样的问题。
解决方案是在 MySQL 数据库上将日期列从 timestamp(1) 更改为 DATETIME。
希望对您有所帮助!
当我运行系统时,存在这样的错误:
InvalidArgumentException in Carbon.php line 425: Data missing
in Carbon.php line 425
at Carbon::createFromFormat('Y-m-d H:i:s', '10-12-2016') in Model.php line 2990
at Model->asDateTime('10-12-2016') in Model.php line 2944
at Model->fromDateTime('10-12-2016') in Model.php line 2872
at Model->setAttribute('tglkop', '10-12-2016') in Model.php line 442
而我的模型是这样的:
<?php
namespace App\Models;
use Eloquent as Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class P3 extends Model
{
use SoftDeletes;
public $table = 'p3_s';
protected $dateFormat = 'Y-m-d';
protected $dates = ['deleted_at', 'tglkop', 'tglp3'];
public $fillable = [
'id_pagu',
'id_p3',
'kdbulan',
'thang',
'nokop',
'tglkop',
'tglp3'
];
protected $casts = [
'id_pagu' => 'string',
'id_p3' => 'string',
'kdbulan' => 'string',
'thang' => 'string',
'nokop' => 'string'
];
public static $rules = [
'id_pagu' => 'required',
'id_p3' => 'required',
'kdbulan' => 'required',
'thang' => 'required',
'nokop' => 'required',
'tglkop' => 'required',
'tglp3' => 'required',
];
}
我的table是这样的:
id, int(10)
id_pagu, varchar(18)
id_p3, varchar(18)
kdbulan, varchar(2)
thang, varchar(4)
nokop, varchar(10)
tglkop, date
tglp3, date
created_at, timestamp
updated_at, timestamp
deleted_at, timestamp
我在 Whosebug 和 laravel 文档中阅读了一些教程,但我仍然对实现它感到困惑
有什么办法可以解决我的问题吗?
只需从 $casts
数组中删除 'tglkop', 'tglp3'
,然后将其添加到 '$dates'
数组。这些属性将自动转换为 Carbon
个实例
更新
我猜你的数据库列 tglkop
和 tglp3
有 DATE
类型而不是 DATETIME
。
这个错误
Carbon::createFromFormat('Y-m-d H:i:s', '10-12-2016') in blah blah blah
说 Carbon
期望日期格式为 Y-m-d H:i:s
但你给出的日期格式为 d-m-Y
(10-12-2016
)
解决方案 1:
将这些列的类型更改为 DATETIME
解决方案 2: 将其添加到您的模型中
protected $dateFormat = 'Y-m-d'; // this is expected format for `MySQL` `DATE` type field
更新 2
我认为您试图在数据库中创建行。你想传递什么数据?我认为您输入的 tglkop
和 tglp3
字段格式错误。
我在 AWS Elastic Beanstalk 环境中部署 Laravel 应用程序时遇到了同样的问题。
解决方案是在 MySQL 数据库上将日期列从 timestamp(1) 更改为 DATETIME。
希望对您有所帮助!