如何更改created_at的默认格式,并updated_at值 laravel

2022-08-30 11:43:53

我是拉拉维尔的新手。我正在使用laravel创建一个应用程序。当我创建一个帖子时,“created_at”和“updated_at”的值如下所示:

2014-06-26 04:07:31
2014-06-26 04:07:31

但是我希望这个值没有时间看起来像这样:

2014-06-26
2014-06-26

只有日期没有时间。

???

请帮帮我。

我的帖子模型:

<?php

class Post extends \Eloquent {

    protected $fillable = array('title', 'body', 'meta','reporter', 'slug', 'image','top');

    public static $rules = array(
        'title'=>'required|min:2',
        'body'=>'required|min:20',
        'reporter'=> 'required|min:2',
        'image'=>'image|mimes:jpeg,jpg,bmp,png,gif'
    );

    public function categories()
    {
        return $this->belongsToMany('Category');
    }

}

我的后控制器存储:

public function store()
{
    $validator = Validator::make(Input::all(), Post::$rules);

    if ($validator->passes()) {
        $post = new Post;
        $post->title = Input::get('title');
        $post->body = Input::get('body');
        $post->reporter = Input::get('reporter');
        $post->meta = Input::get('meta');
        $post->slug = Input::get('title');
        $post->top = Input::get('top');

        $image = Input::file('image');
        if ($image) {
            $filename = date('Y-m-d-H:i:s')."-".$image->getClientOriginalName();
            Image::make($image->getRealPath())->resize(250, 145)->save('public/images/postimages/'.$filename);
            $post->image = 'images/postimages/'.$filename;
        }


        $categories = Input::get('categories');

        $post->save();

        $post->categories()->sync($categories);

        return Redirect::route('admin.posts.index')
            ->with('message', 'Product Created');
    }

    return Redirect::back()
        ->with('message', 'Something went wrong')
        ->withErrors($validator)
        ->withInput();
}

请帮帮我。


答案 1

在模型中,添加两个访问器方法,如下所示:Post

public function getCreatedAtAttribute($date)
{
    return Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $date)->format('Y-m-d');
}

public function getUpdatedAtAttribute($date)
{
    return Carbon\Carbon::createFromFormat('Y-m-d H:i:s', $date)->format('Y-m-d');
}

现在,每次使用模型中的这些属性来显示日期时,这些属性的显示方式都会有所不同,只是日期没有时间,例如:

$post = Post::find(1);
echo $post->created_at; // only Y-m-d formatted date will be displayed

因此,您无需更改数据库中的原始类型。若要将数据库中的 更改为 from,您需要将其更改为 from,并且需要从迁移(如果使用)或直接到数据库中(如果未使用迁移)执行此操作。该方法添加这些字段(使用迁移),要在迁移过程中更改这些字段,您需要删除该方法并改用,例如:typeDateTimestamptimestamps()timestamps()date()

$table->date('created_at');
$table->date('updated_at');

答案 2
{{ $post->created_at }}

将返回 '2014-06-26 04:07:31'

解决方案是

{{ $post->created_at->format('Y-m-d') }}

推荐