2016-07-29 4 views
1

Ich habe zwei Tabellen auf Laravel 5 und müssen Abfrage-Generator verwenden. Ich habe bereits den SQL-Server dafür, aber ich kann ihn nicht in die Query Builder-Syntax konvertieren. SQL istNative SQL Abfrage Builder in 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' 

wenn ich

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

einige Syntax wie folgt zu verwenden, es Fehler ist so wie kann ich die native SQL wie "IN" in Query Builder drehen, dank

+0

Regel die Fehlermeldung veröffentlichen hilft anderen das Problem lösen;) –

Antwort

0

Try Below-Abfragen und sehen 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(); 

Oder versuchen, diese

$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 Ihrer Frage, die Sie gefragt, wie IN zu verwenden, für IN versuchen, etwas wie folgt aus: -

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

Die zweite Methode kann ein Ergebnis erhalten –

0

Dies ist Syntax für 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();