2016-07-29 4 views
1

У меня есть две таблицы на Laravel 5 и вам нужно использовать Query Builder. У меня уже есть sql для него, но я не могу преобразовать его в синтаксис Query Builder. SQL являетсяСобственный SQL для Query Builder в Laravel5

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" в Query Builder, благодаря

+0

Обычно отправляя сообщение об ошибке помогает другим решить проблему;) –

ответ

0

Try Ниже запросов и посмотреть на Рез ии:

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