我有控制器代码从表中获取一些行并将它们传递给视图,下面是代码提取的示例结果
在上面的图片中,您可以检查是否有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,即应该在获得雄辩的对象后进行或者它应该直接在db查询中触发,或者更好地在视图中隐藏日期。
非常感谢帮助。
答案 0 :(得分:1)
$dt = Carbon::today();
echo $dt->format('j F Y \\, l');
答案 1 :(得分:1)
虽然有很多方法,但我认为使用Carbon view
在format()
中处理是个不错的解决方案。有关进一步的格式化方法,请参阅Carbon docs。
在对您的收藏进行迭代时,您可以将show_date
格式化为:
$showTime->show_date->format('j M Y, D');
注意:为此,show_date
必须是Carbon的实例。您可以通过在model中添加它来告诉Eloquent自动执行此操作。它看起来像这样:
/**
* The attributes that should be mutated to dates.
*
* @var array
*/
protected $dates = ['created_at', 'updated_at', 'show_date'];
答案 2 :(得分:0)
这是对这个问题有用的最终答案,感谢@camelCase和@Borna找出这个答案的解决方案。
我在此解决方案中使用了Laravel 5.2访问器,请点击此处https://laravel.com/docs/5.3/eloquent-mutators#defining-an-accessor
这是我在Model中编写的访问器代码,它转换了在eloquent集合中获取的dateformat。
public function getShowdateAttribute($value)
{
$carbon = new Carbon($value);
return $carbon->format('j M Y, D');
}