2017-01-12 5 views
1

이 내 MySQL의 테이블 "listazelja"내가 내 컨트롤러에서이 코드를 제목에 언급 것을 얻을 할 http://prntscr.com/duj2tf최대 이틀 된 테이블 랭킹 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')); 
    } 
} 

이 내가 점점 오전 오류가 네 자리 연도

누락 데이터를 찾을 수 없습니다 : 425 Carbon.php 라인

InvalidArgumentException

이 코드 줄에 문제가 있다는 것을 알고 있습니다. ->having($sada->diffInHours(Carbon::createFromFormat('Y-m-d H-m-s', 'created_at')) <= 48)

그래서 제대로 작동하려면 어떻게해야합니까?

P. MySQL은 created_at 유형이다 : 타임 스탬프

+0

'created_at'은 $ sada에서 호출하기 때문에 문자열로 전달되는 것 같습니다. 추신. 이것이 내가 프레임 워크를 싫어하는 이유입니다. – fie

+0

Mysql NOW() 함수와 INTERVAL 또는 TiMEDIFF를 사용해보십시오 ... – ratmalwer

+0

'Carbon :: createFromFormat ($ format, $ time, $ tz);'에서 두 번째 인수는'$ time'이어야하지만 문자열을 전달하고 있습니다. 'created_at'의 값을 사용하십시오. Carbon :: createFromFormat ('Y-m-d H', '1975-05-21 22') -> toDateTimeString(); // 1975-05-21 22 : 00 : 00' – Gayan

답변

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(); 

희망 당신을 위해이 일!

+0

타이, 이것이 효과가있는 것 같습니다! – pobro123

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(); 
+0

maxhours에 "$"가 누락 된 것을 제외하고는 다른 어떤 것도 작동하지 않습니다.하지만 어쨌든 고맙습니다. :) – pobro123