我在项目中使用 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']
)}}
答案 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
。