这是我的mySql表“listazelja”: http://prntscr.com/duj2tf
我希望在我的控制器中使用此代码获得标题中提到的内容:
<?php
namespace App\Http\Controllers;
use App\ListaZelja;
use Carbon\Carbon;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
class GlazbeniController extends Controller
{
public function listazelja(){
$sada = Carbon::now();
$listaZelja = DB::table('listazelja')->orderBy('zapis_count','desc')->select(DB::raw('count(*) as zapis_count'),'zapis_id')
->groupBy('zapis_id')
->having($sada->diffInHours(Carbon::createFromFormat('Y-m-d H-m-s', 'created_at')) <= 48)
->take(10)->get();
return view('pregledajlistuzelja',compact('listaZelja'));
}
}
这是我得到的错误:
Carbon.php第425行中的InvalidArgumentException: 无法找到四位数的年份 缺少数据
我知道问题在于这行代码:
->having($sada->diffInHours(Carbon::createFromFormat('Y-m-d H-m-s', 'created_at')) <= 48)
所以我应该怎么做才能让它发挥作用。
P.S。 mySql中的created_at类型为:timestamp
答案 0 :(得分:0)
试试这个
$maxhours = Carbon::now()->subHours(48)->toDateTimeString();
$listaZelja = DB::table('listazelja')
->orderBy('zapis_count','desc')
->select(DB::raw('count(*) as zapis_count'),'zapis_id')
->groupBy('zapis_id')
->having('created_at' <= maxhours)
->take(10)->get();
答案 1 :(得分:0)
我认为你的查询如下:
$twoDaysOldDate = date("Y-m-d",strtotime('now -48 hours'));
$listaZelja = DB::table('listazelja')
->orderBy('zapis_count','desc')
->select(DB::raw('count(*) as zapis_count'),'zapis_id')
->groupBy('zapis_id')
->whereDate('created_at', '<=', $twoDaysOldDate)
->take(10)
->get();
希望这对你有用!