【发布时间】:2015-02-03 12:59:48
【问题描述】:
我有一些查询需要使用查询生成器传递给另一个查询
$query = DB::table('table')->whereIn('some_field', [1,2,30])->toSql();
Model::join(DB::raw("({$query}) as table"), function($join) {
$join->on('model.id', '=', 'table.id');
})
结果应该是
Select * from model join (select * from table where some_field in (1,2,30)) as table on model.id = table.id
但绑定没有通过,这迫使我这样做
$query = DB::table('table')->whereRaw('some_field in ('. join(',', [1,2,30]) .')')->toSql();
有时可能不安全。如何获取带绑定的查询?
【问题讨论】:
-
some_field是整数吗?如果是这样,您可以使用join(',', array_map('intval', [1,2,30]))来确保数组只包含整数。 -
验证不是个案。更多关于代码的清晰性。