重新格式化Laravel集体选择中的选择日期

时间:2018-10-26 15:45:20

标签: php laravel

我在项目中使用 Laravel Collective 表单,并且通常使用下面的代码填充我的选择下拉列表。

但是,我遇到一个问题,我想将以date格式存储的数据库YYYY-MM-DD转换为更易读的MM/DD/YYYY

对于我的其余代码,我一直在使用php的date/strtotime格式,如下所示:

date('m/d/Y', strtotime($date))

有人对我如何转换从数据库中提取的内容以正确显示在laravel集体选择下拉列表中有任何想法吗?

控制器

$scripts_select = Script::orderBy('prescribe_date', 'desc')
    ->pluck('prescribe_date', 'id');

刀片

{{Form::label('script', 'Script')}}
{{Form::select(
    'script',
    $scripts_select,
    $prescription->script_id, 
    ['class' => 'form-control', 'placeholder' => 'Select a Script']
)}}

2 个答案:

答案 0 :(得分:2)

您可以链接->map()方法并按如下所示更改每个项目的value

$scripts_select = Script::orderBy('prescribe_date', 'desc')
    ->pluck('prescribe_date', 'id')->map(function ($date, $key) {
        return date('m/d/Y', strtotime($date))
    })->all();

答案 1 :(得分:0)

我没有进行测试的更改,但是,您可以在->map()方法之后->pluck()来更改格式。

尝试以下操作:

$scripts_select = Script::orderBy('prescribe_date', 'desc')
    ->pluck('prescribe_date', 'id')
    ->map(function ($script, $key) {
        $script['prescribe_date'] = Carbon::createFromFormat('Y-m-d', $script['prescribe_data'])->format('m/d/Y');
        return $script;
    });

在这里,我们遍历每个script,使用presribe_date重新格式化所有Carbon