Laravel - 数据移动器

Laravel - Date mutator

尝试在 Laravel 中为日期创建一个突变器,但它不起作用。

这是我的例子

public function getEventEndAttribute($date)
{

    return Carbon::parse($date)->format('d.m.Y H:i')

}

例如,在我的用户模型中,我有一个运行良好的修改器:

// convert email address to lowercase
public function getEmailAttribute($value) {
    return strtolower($value);
}

因此,即使用户写了一封大写字母的电子邮件,它也会被转换为小写....

我想要我的约会对象...从 MySQL 数据库格式转换为我的本地格式

这是从 SO 复制过来的,但仍然无效。 请帮忙。

控制器

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Http\Requests;
use App\UserRequest;
use Carbon\Carbon;
use Auth;
use DB;

class UserRequestsController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        //dd(DB::table('user_requests')->get());
        return view('user-requests.index', ['userRequests' => DB::table('user_requests')->get()]);
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        return view('user-requests.create');
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        //dd($request->event_end);

        $this->validate($request, [
            'event_name' => 'required|max:255',
            'event_start' => 'required|date',
            'event_end' => 'required|date',
        ]);

        $userRequest = new UserRequest();
        $userRequest->user_id = Auth::user()->id;
        $userRequest->event_name = $request->event_name;
        $userRequest->event_start = $request->event_start;
        $userRequest->event_end = $request->event_end;

        $userRequest->save();

        return redirect('requests');
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        //
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        //
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        //
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        //
    }
}

当我点击我的商店方法时,我得到了这个错误:

您可以尝试 Carbon\Carbon::createFromFormat($format, $input)。至于 parse 方法,您可以使用它从字符串创建 Carbon 实例。

您实际上可以 laravel 通过将日期数组添加到您的模型来自动将日期更改为 Carbon object:

protected $dates = [
    'created_at',
    'updated_at',
    'event_end'
];

然后您可以在 blade 模板中对其进行格式化:

{{ $myModel->event_end->format('d.m.Y H:i') }}

或者您可以添加 $dateFormat 属性 以自动将此模型上的所有日期转换为您选择的格式:

 protected $dateFormat = 'd.m.Y H:i';

查看日期修改器:https://laravel.com/docs/5.3/eloquent-mutators#date-mutators