2016-07-29 67 views
1

我在Laravel 5上有兩個表,必須使用查詢生成器。我已經得到了它的SQL,但我無法將其轉換爲查詢生成器語法。 SQL是在Laravel5中查詢生成器的原生SQL

SELECT COUNT(A.cid) FROM `A` WHERE A.cid IN (SELECT `id` FROM `B` WHERE `create_user`='$name') AND `access_time` BETWEEN '$start_data' AND '$end_data' 

當我使用

DB::table('A') 
     ->join('B', function ($join) { 
      $join->on('A.id', '=', 'B.cid'); 
     }) 
     ->get(); 

一些語法這樣的,這是錯誤,所以我怎麼可以把本地SQL像「IN」爲查詢生成器,感謝

+0

通常發佈錯誤消息幫助別人解決問題;) –

回答

0

嘗試以下查詢並查看res ULT:

$result= DB::table('a') 
      ->select(DB::raw('COUNT(a.cid) as total_cid')) 
      ->join('b', 'a.cid', '=', 'b.id') 
      ->where('b.create_user', $name) 
      ->whereBetween('a.access_time', [$start_data, $end_data]) 
      ->first(); 

或者試試這個

$result= DB::table('a') 
      ->join('b', 'a.cid', '=', 'b.id') 
      ->where('b.create_user', $name) 
      ->whereBetween('a.access_time', [$start_data, $end_data]) 
      ->count(); 

在你的問題,你問到如何使用IN,爲IN嘗試這樣的事情: -

$result= DB::table('a')->whereIn('cid', [1,2,3,4]); 
+0

第二種方法可以得到結果 –

0

這是語法爲joins in Laravel 5.2

$result= DB::table('a') 
      ->join('b', 'a.id', '=', 'b.cid') 
      ->select('a.cid') 
      ->where('A.cid', 'like', '%string%') //optional like 
      ->get();