Php Laravel日期时间
我在使用wherebetween按时间戳(datetime)过滤数据时遇到问题 要测试查询,这是我的路线Php Laravel日期时间,php,laravel,postgresql,query-builder,Php,Laravel,Postgresql,Query Builder,我在使用wherebetween按时间戳(datetime)过滤数据时遇到问题 要测试查询,这是我的路线 Route::get('/test3/{iduser}/{waktu}', 'SharedController@fgetxy_person'); 这是URL测试 http://localhost:8000/test3/32/2020-12-08 2010:15:00 这是我的控制器 public function fgetxy_person($iduser, $waktu){
Route::get('/test3/{iduser}/{waktu}', 'SharedController@fgetxy_person');
这是URL测试
http://localhost:8000/test3/32/2020-12-08 2010:15:00
这是我的控制器
public function fgetxy_person($iduser, $waktu){
$time = Carbon::createFromFormat('Y-m-d H:i:s', $waktu, 'Asia/Jakarta');
// dd($time->addMinutes(-5)); //output: 10:10:00
// dd($time->addMinutes(30)); //output: 10:45:00
$xybeacon = DB::table('transaksi as tb')
->select('tb.id_ble', 'tb.rssi', 'tb.id_ble2', 'tb.rssi2', 'tb.id_ble3', 'tb.rssi3','tb.updated_at')
->where('id_user', $iduser)
->whereBetween('updated_at', [$time->addMinutes(-5), $time->addMinutes(30)]) //output: []
// ->whereBetween('updated_at', array($time->addMinutes(-5), $time->addMinutes(30))) // output: []
// ->where('updated_at','>=',$time->addMinutes(-5)) //output: 94 array
// ->where('updated_at','<=',$time->addMinutes(30)) //output: 35 array
// ->whereRaw(
// "(updated_at >= ? AND updated_at <= ?)",
// [$time, $time->addMinutes(30)]
// ) //output: []
->get();
公共功能fgetxy_person($iduser,$waktu){
$time=Carbon::createFromFormat('Y-m-dh:i:s',$waktu,'Asia/Jakarta');
//dd($time->addMinutes(-5));//输出:10:10:00
//dd($time->addMinutes(30));//输出:10:45:00
$xybeacon=DB::table('transaksi as tb')
->选择('tb.id_ble'、'tb.rssi'、'tb.id_ble2'、'tb.rssi2'、'tb.id_ble3'、'tb.rssi3'、'tb.updated_at')
->其中('id_user',$iduser)
->其中('updated_at',[$time->addMinutes(-5),$time->addMinutes(30)]//输出:[]
//->whereBetween('updated_at',array($time->addMinutes(-5),$time->addMinutes(30))//输出:[]
//->其中('updated_at','>=',$time->addMinutes(-5))//输出:94数组
//->where('updated_at',”默认的碳实例是可变的,这意味着如果您使用相同的实例,您将始终使用相同的时间。您应该切换到不可变的碳实例
public function fgetxy_person($iduser, $waktu){
$time = CarbonImmutable::createFromFormat('Y-m-d H:i:s', $waktu, 'Asia/Jakarta');
$xybeacon = DB::table('transaksi as tb')
->select('tb.id_ble', 'tb.rssi', 'tb.id_ble2', 'tb.rssi2', 'tb.id_ble3', 'tb.rssi3','tb.updated_at')
->where('id_user', $iduser)
->whereBetween('updated_at', [$time->addMinutes(-5), $time->addMinutes(30)])
->get();
这将确保中的两个参数之间所指的时间不同
不同之处在于,所有更改实例时间的函数都将在该时间内返回一个新实例,而不是在更改时间后返回同一实例。2020-12-08 2010:15:00
看起来不是正确的日期时间我确信它是正确的,因为我可以添加分钟并进行测试(dd($time->addMinutes(-5));//输出:10:10:00)