2016-10-19 30 views
0

我初學Laravel.I可以寫在原PHP.Now查詢我想將它寫在Laravel framework.I已經閱讀文檔和到目前爲止已經試過:如何在Laravel 5.1中編寫原始查詢?

原PHP:

SELECT count(*)/(TIMESTAMPDIFF(YEAR,'2016-01-01 00:00:00',now())+1) as avg from buyer where created_at >= '2016-01-01 00:00:00'; 

試圖與Laravel:

public function index(){ 
    // 
    $yrUserReg = DB::table('buyer') 
        -> SELECT (DB::raw (count('*')/("TIMESTAMPDIFF(YEAR,'2016-01-01 00:00:00',now())+1"))) 
        -> AS ('avg') 
        -> WHERE ("created_at >= '2016-01-01 00:00:00'"); 
    return view('userflow',compact($yrUserReg));     
} 

但它引發我一個錯誤:Division by Zero。我無法找到任何解決方案。 在此先感謝。任何幫助將不勝感激!!

+1

你忘了包裹表達你傳遞給DB ::生在引號。這是執行爲PHP。並且你已經在SQL計數內部引用了引號 – Clive

+0

使用'$ result = DB :: select(「」);'在select();'內寫入你的原始代碼'' – AHJeebon

+0

也要注意那些方法('select )','as()'和'where()')與這些空格和這樣的大寫字母永遠不會工作。 – phaberest

回答

0

下面是完整的內置查詢:

$yrUserReg = DB::table('buyer') 
       ->select(DB::raw("(count('*')/(TIMESTAMPDIFF(YEAR,'2016-01-01 00:00:00',now())+1)) as avg")) 
       ->where('created_at', '>=', '2016-01-01 00:00:00') 
       ->get(); 
+1

你的想法a)在 - >選擇 – Sam

+0

是的你是對的。謝謝 :) –