[英]Fetch date and convert format using laravel 5.2 eloquent query & carbon
我有控制器代碼,該控制器代碼從表中獲取一些行並將其傳遞給視圖,以下是由代碼獲取的示例結果
在上面的圖像中,您可以檢查是否有show_date,格式為Ymd,現在我將其顯示為當前日期,但我想將此日期格式轉換為如下格式
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'));
}
我有點困惑,我該如何批量更新雄辯對象的所有show_date,即應該在獲得雄辯對象之后執行,還是應該直接在db查詢中觸發,或者最好在View中隱蔽日期。
感謝幫助。
$dt = Carbon::today();
echo $dt->format('j F Y \\, l');
盡管有很多方法,但我認為使用Carbon的format()
在view
進行處理是一個不錯的解決方案。 有關更多格式化方法,請參閱Carbon文檔 。
遍歷集合時,可以設置show_date
格式如下:
$showTime->show_date->format('j M Y, D');
注意:要使其正常工作, show_date
必須是Carbon的實例。 您可以通過將Eloquent添加到模型中來告訴Eloquent自動執行此操作。 它看起來像這樣:
/**
* The attributes that should be mutated to dates.
*
* @var array
*/
protected $dates = ['created_at', 'updated_at', 'show_date'];
這是解決該問題的最終答案,這要歸功於@camelCase和@Borna找出解決方案。
我將Laravel 5.2訪問器用於此解決方案,請在此處查看https://laravel.com/docs/5.3/eloquent-mutators#defining-an-accessor
這是我在Model中編寫的訪問器代碼,該代碼可轉換雄辯的集合中獲取的dateformat。
public function getShowdateAttribute($value)
{
$carbon = new Carbon($value);
return $carbon->format('j M Y, D');
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.