在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”为查询生成器,感谢
答
尝试以下查询并查看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();
通常发布错误消息帮助别人解决问题;) –