我有一些查询,我需要使用查询生成器传递给另一个查询
$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');
})
Run Code Online (Sandbox Code Playgroud)
哪个应该结果
Select * from model join (select * from table where some_field in (1,2,30)) as table on model.id = table.id
Run Code Online (Sandbox Code Playgroud)
但绑定没有通过,这迫使我去做
$query = DB::table('table')->whereRaw('some_field in ('. join(',', [1,2,30]) .')')->toSql();
Run Code Online (Sandbox Code Playgroud)
什么可能不安全有时.如何通过绑定获取查询?
我有一个称为更改的 MongoDB集合,其中包含以下数据
{
"date" : ISODate("2014-06-09T00:00:00.000Z"),
"field" : "ip",
"from" : "157.11.209.123",
"to" : "107.21.109.254"
}
{
"date" : ISODate("2014-05-15T00:00:00.000Z"),
"field" : "ip",
"from" : "107.21.109.254",
"to" : "157.11.209.123"
}
{
"date" : ISODate("2014-06-09T00:00:00.000Z"),
"field" : "registration",
"from" : "Old service",
"to" : "Some new service"
}
Run Code Online (Sandbox Code Playgroud)
然后我想制作典型的SQL查询来计算出现次数并将其分组field.所以,我在MongoDB中创建了查询
db.changes.group({
"key": {
"field": true
},
"initial": {
"count": 0,
},
"reduce": function(obj, prev) {
prev.count++;
},
});
Run Code Online (Sandbox Code Playgroud)
它工作正常,但我如何将其转换为与Laravel 4一起使用?我正在使用jenssegers/laravel-mongodb与mongo服务器进行通信.
另外,我在查询中有更多条件,我已删除它以使我的问题看起来更清楚,所以我正在寻找将该查询完全转换为laravel的解决方案,而不是其他可能的解决方案:).
php mongodb laravel aggregation-framework jenssegers-mongodb
我有像这样的mongodb文件
[_id] => MongoId Object (
[$id] => 52135a6baabacb9f948b4567
)
[change] => 7
[from] => 8
[to] => 1
Run Code Online (Sandbox Code Playgroud)
如何在MongoDB中选择字段"from"大于"to"的文档?我试过这样的东西,但根本不起作用.
$collection->find( array('from' => array('$gt' => 'to') ) );
Run Code Online (Sandbox Code Playgroud)