我正在尝试将一些数据保存到我的数据库中,并且需要在保存之前格式化日期/时间。
我的代码如下:
public static function toSqlDate($date, $formatResult = true)
{
if (!$date)
{
return null;
}
$dateTime = DateTime::createFromFormat(DEFAULT_DATETIME_FORMAT, $date, new DateTimeZone(DEFAULT_TIMEZONE));
return $formatResult ? $dateTime->format('Y-m-d') : $dateTime;
}
当我尝试保存时,我在调试器中收到以下错误。返回行是突出显示为错误的行。
Symfony \ Component \ Debug \ Exception \ FatalErrorException
在非对象上调用成员函数format()
我真的不确定如何尝试解决这个问题。有没有办法可以在输出错误之前输出每个被拉入的值?我试图找出$ dateTime没有作为对象返回。
任何帮助都将不胜感激。
其他一些信息:
我创建了一个指向上面函数的实用程序/别名,在我的模型库中我通过以下方式访问它。
public function save($publicId, $data)
{
...
$form->date = Utils::toSqlDate($data['date']);
...
$form->save();
...
}
我在视图中有以下字段
{{ Former::text('date')->addClass('form-control form-control-inline input-medium default-date-picker')->data_bind("datePicker: date, valueUpdate: 'afterkeydown'") }}
答案 0 :(得分:4)
您可以在mutator
中创建Eloquent Model
方法,以便在保存任何模型时自动进行转化,例如,如果{{1}中的时间戳为dob
然后只需在User
模型中添加以下方法:
User
因此,您可以轻松保存用户模型,例如:
public function setDobAttribute($value)
{
$dt = \Carbon\Carbon::createFromFormat('Y/m/d', $value)->toDateString();
$this->attributes['dob'] = $dt;
}
将使用$user = new User;
$user->dob = Input::get('dob');
// ...
$user->save();
模式中定义的mutator/setDobAttribute
方法为您自动设置日期,您无需执行任何操作。