在Laravel5中查询生成器的原生SQL

问题描述:

我在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

通常发布错误消息帮助别人解决问题;) –

尝试以下查询并查看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

第二种方法可以得到结果 –

这是语法为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();