briannesbitt / Carbon with Laravel Blade Templates - 格式化自定义dateTime列

时间:2014-02-03 13:45:36

标签: php datetime laravel

我正在尝试在Blade View中显示格式化日期。我正在使用Laravel 4.1。

我在config/app.php

中创建了一个别名
'Carbon'          => 'Carbon\Carbon'

我按如下方式迁移约会表:

$table->dateTime('appointment');

查看

@foreach($appointments as $appointment)
<tr>
        <td>{{{ $appointment->customer_name }}}</td> 
    <td>{{{ $appointment->consultant->consultant_name }}}</td>
    <td>{{{ $appointment->appointment }}}</td> {{-- Displays as seen in mysql --}}
    </tr>
@endforeach

如果我尝试按如下方式格式化日期,则会抛出异常:

<td>{{{ $appointment->appointment->format('Y-m-d') }}}</td>

Symfony \ Component \ Debug \ Exception \ FatalErrorException
Call to a member function format() on a non-object

如果我将{{{ $appointment->appointment->format('Y-m-d') }}}更改为{{{ $appointment->created_at->format('Y-m-d') }}},则日期格式正确。

我如何获得laravel和Carbon来处理appointment作为我可以格式化的日期?

1 个答案:

答案 0 :(得分:0)

Appointment模型中添加属性

protected $dates = array('appointment');

将其选中并添加到默认字段中,将其视为日期(created_atupdated_atdeleted_at),然后自动转换为Carbon实例。

您可以改为覆盖getDates方法,正如您在评论中所建议的那样,但由于您仍希望将所有默认字段视为日期,因此无需覆盖{{1}}方法。通过设置此属性,无需重复它们。请参阅the source code for getDates