在处理日期/时间时,在非对象上调用成员函数format()

时间:2014-06-22 12:53:05

标签: laravel laravel-4

我正在尝试将一些数据保存到我的数据库中,并且需要在保存之前格式化日期/时间。

我的代码如下:

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'") }}

1 个答案:

答案 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方法为您自动设置日期,您无需执行任何操作。