これは私のMySQLのテーブル「listazelja」:私は私のコントローラでこのコードをタイトルに記載されているものを取得したい http://prntscr.com/duj2tf最大2日間のトップ10のテーブルエントリーを取得しますか?
:
:<?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'));
}
}
これは私が取得しています誤りがあります4桁の年が
を逃す データを見つけることができませんでした :425 Carbon.phpラインのInvalidArgumentException
私はその問題のコード行を知っている: ->having($sada->diffInHours(Carbon::createFromFormat('Y-m-d H-m-s', 'created_at')) <= 48)
ので、私はそれを動作させるために何をすべきか。
P.S. MySQLでのcreated_atは型である:タイムスタンプ
私は 'created_at'は$ sadaの中で呼び出すので、文字列として渡されていると思います。 PS。これが私がフレームワークを嫌う理由です。 – fie
Mysql NOW()関数とINTERVALまたはTiMEDIFFを使用してみてください... – ratmalwer
'Carbon :: createFromFormat($ format、$ time、$ tz);'の2番目の引数は '$ time'でなければなりませんが、文字列'created_at'の値で置き換えます。 Carbon :: createFromFormat( 'Y-m-d H'、 '1975-05-21 22') - > toDateTimeString(); // 1975-05-21 22:00:00' – Gayan