Php 将laravel中列处创建的_转换为y-m-d格式,在whereBetween查询中
这是我的控制器Php 将laravel中列处创建的_转换为y-m-d格式,在whereBetween查询中,php,laravel,laravel-5,Php,Laravel,Laravel 5,这是我的控制器 public function index(){ $products = Order::whereHas('user', function ($query) { if(request()->has('d') && request()->get('d')){ $arr = [ 'start' => Carbon::parse(substr(request()->get('d'), 4, 1
public function index(){
$products = Order::whereHas('user', function ($query) {
if(request()->has('d') && request()->get('d')){
$arr = [
'start' => Carbon::parse(substr(request()->get('d'), 4, 11))->format('Y-m-d'),
'end' => Carbon::parse(substr(request()->get('d'), 64, -44))->format('Y-m-d')
];
$builder = $query->whereBetween('created_at', [$arr['start'],$arr['end']]);
}
});
return OrdersResource::collection($orders->latest()->paginate(5));
}
我的数组$arr
如下所示
array:2 [
"start" => "2018-08-07"
"end" => "2018-08-09"
]
如何将laravel中创建的(日期时间)
列更改为仅年-月-日格式
我需要将created_at转换为该格式,以便执行laravel的whereBetween查询,因为它没有给我确切的结果,而不是更改created_at列的格式,我建议您将
开始
和结束
更新为第一个日期的开始和最后一个日期的结束。Carbon
对象应该传递给whereBetween
方法,而不是它们的字符串表示形式
$arr = [
'start' => Carbon::parse(substr(request()->get('d'), 4, 11))->startOfDay(),
'end' => Carbon::parse(substr(request()->get('d'), 64, -44))->endOfDay()
];
// Both `start` and `end` are Carbon objects
$builder = $query->whereBetween('created_at', [$arr['start'],$arr['end']]);
您可以使用mysql
DATE()
函数
$builder = $query->whereBetween(DB::raw('DATE(created_at)'), [$arr['start'],$arr['end']]);
如果要更改日期格式,date\u格式(创建于,'%Y-%m-%d')
别忘了导入DB
use DB;
您可以在其中使用DB::raw('DATE(created_at)
,这两个答案都适用