【问题标题】:Reformat Plucked Date in Laravel Collective Select在 Laravel Collective Select 中重新格式化采摘日期
【发布时间】:2018-10-27 02:52:14
【问题描述】:

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

但是,我遇到了一个问题,我想将存储在 YYYY-MM-DD 格式中的数据库 date 转换为 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']
)}}

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    您可以链接->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();
    

    【讨论】:

    • 这是一个很好的解决方案,可以正常工作。但还有更多需要考虑的事情......如果您想在多个地方执行此操作,您可以考虑为脚本模型设置一个属性,该属性为您转换日期格式。然后,您只需在 Script 模型上设置 $appends 数组以包含该属性。然后你可以拉一个脚本并访问自定义日期格式,如下所示:$script->prescribeDateCustomFormat 或任何你想调用的格式。
    【解决方案2】:

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

    尝试以下方法:

    $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,使用Carbon重新格式化所有presribe_date

    【讨论】:

      猜你喜欢
      • 2012-06-22
      • 2019-12-25
      • 1970-01-01
      • 1970-01-01
      • 2018-07-28
      • 2013-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多