Laravel - 更新前从表单更改日期格式

时间:2018-04-21 01:01:53

标签: php laravel eloquent backpack-for-laravel

我正在使用laravel和背包,我正在尝试将日期字段的格式从yyyy-mm-dd更改为mm / dd / yyyy,然后再将其保存到数据库中。我知道这不是数据库标准的真实日期格式,但不幸的是我别无选择。这是我的日期字段:

<!-- Date-->
        @php
            $ISODate = \Carbon\Carbon::parse($entry->DATE)->format('Y-m-d');
        @endphp
       <div class="form-group col-md-12">
        <label>Date</label>
            <input
            type="date"
            name="DATE"
            id="DATE"
            value= "{{ $ISODate }}"
            class="form-control"
        >
        </div>

以下是控制器中的更新功能:

 public function update(UpdateRequest $request)
{
    $this->crud->hasAccessOrFail('update');

    // fallback to global request instance
    if (is_null($request)) {
        $request = \Request::instance();
    }

    // update the row in the db
    $item = $this->crud->update($request->get($this->crud->model->getKeyName()),
                        $request->except('save_action', '_token', '_method'));
    $this->data['entry'] = $this->crud->entry = $item;

    // show a success message
    \Alert::success(trans('backpack::crud.update_success'))->flash();

    // your additional operations before save here

    $item->DATE = Carbon::parse($item->DATE)->format('d/m/Y');


    $redirect_location = parent::updateCrud($request);
    // your additional operations after save here
    // use $this->data['entry'] or $this->crud->entry
    return $redirect_location;
}

这正确地将输入日期从mm / dd / YYYY解析为浏览器的datepicker所需的YYYY-mm-dd。此代码还更新数据库中的列,但它仍然是ISO格式。它不会产生任何错误。

在保存行之前转换日期格式或在保存之后立即更新等的最佳方法是什么

谢谢

2 个答案:

答案 0 :(得分:0)

您可以使用碳来格式化日期

echo \Carbon\carbon::createFromFormat('d/m/Y',$inputdata)->format('Y-m-d');

这将以mm / dd / YYYY的形式获取$ inputdata,并将其转换为YYYY-mm-dd。 Lemme知道这是否有效

答案 1 :(得分:0)

不,那不起作用。我能够弄明白,这对我有用:

   $this->crud->entry->update(['DATE' => Carbon::parse($request->DATE)->format('m/d/Y')]);