【问题标题】:Fetch date and convert format using laravel 5.2 eloquent query & carbon使用 laravel 5.2 eloquent query & carbon 获取日期和转换格式
【发布时间】:2017-01-29 02:51:53
【问题描述】:

我有控制器代码,它从表中获取一些行并将它们传递给视图,下面是代码获取的示例结果

在上图中,您可以检查是否有 show_date 并且格式是 Y-m-d,现在我正在按目前的方式显示这个日期,但我想将此日期格式转换为类似的格式

 21 Sep 2016 ,Wed

我的控制器代码是

 public function show($id)
{
    $cities=General_cities::pluck('city_name','city_id');
    $showtime=Movies_showtimes::with('showdata','movie','cinema')->where([['cinema_id','=',$id],['show_date','>=',Carbon::today()],])->orderBy('show_date', 'asc')->get();

    $cinemahall=Movies_cinemahall::where('cinema_id',$id)->get();
    return view('admin.viewshowtime',compact('cities','showtime','cinemahall'));
}

我有点困惑如何批量更新 eloquent 对象的所有 show_date,即应该在获取 eloquent 对象后完成,或者应该直接在 db 查询中触发,或者最好在 View 中隐藏日期。

感谢您的帮助。

【问题讨论】:

    标签: php laravel date laravel-5.2 php-carbon


    【解决方案1】:
    $dt = Carbon::today();
    echo $dt->format('j F Y \\, l'); 
    

    【讨论】:

      【解决方案2】:

      虽然有很多方法,但我认为使用 Carbon 的 format() 处理 view 是一个不错的解决方案。更多格式化方法见Carbon docs

      在遍历您的集合时,您可以将show_date 格式化为:

      $showTime->show_date->format('j M Y, D');
      

      注意:为此,show_date 必须是 Carbon 的一个实例。您可以通过将 Eloquent 添加到 model 中来告诉 Eloquent 自动执行此操作。它看起来像这样:

      /**
       * The attributes that should be mutated to dates.
       *
       * @var array
       */
      protected $dates = ['created_at', 'updated_at', 'show_date'];
      

      【讨论】:

        【解决方案3】:

        这是解决这个问题的最终答案,感谢@camelCase 和@Borna 找到了这个答案的解决方案。

        我在这个解决方案中使用了 Laravel 5.2 访问器,查看这里https://laravel.com/docs/5.3/eloquent-mutators#defining-an-accessor

        这是我在 Model 中编写的访问器代码,它转换在 eloquent 集合中获取的日期格式。

         public function getShowdateAttribute($value)
        {
            $carbon = new Carbon($value);
            return $carbon->format('j M Y, D'); 
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-12-01
          • 2016-02-28
          • 1970-01-01
          • 2016-03-24
          • 1970-01-01
          • 1970-01-01
          • 2020-04-02
          • 2018-04-20
          相关资源
          最近更新 更多