我和jenssegers在laravel中与mongo合作
我希望$match
在我的控制器中使用此函数中的当前id:
public function updatearray(Request $request, $id)
{
$id = new \MongoDB\BSON\ObjectID($id);
# return var_dump($id);
# return object(MongoDB\BSON\ObjectID)#179 (1)
# { ["oid"]=> string(24)"594dd6ccbb7de924c0005585" }
$result = Work::raw(function($collection) {
return $collection->aggregate(
array(
array('$match' => array( "_id" => $id )),
array('$project' =>
array( "Monto" => array('$sum' => '$Abonos.Monto') )
)
)
);
});
}
我明白了。
(1/1)ErrorExceptionUndefined变量: id 。
但如果我在代码进入原始函数之前返回$id
,则会返回正确的当前ID。如果我对原始查询中的ObjectId
进行核实,那就可以了。
我错过了什么吗?
答案 0 :(得分:1)
ErrorExceptionUndefined变量:id
因为你没有将id传递给闭包
public function updatearray(Request $request, $id) { $id = new \MongoDB\BSON\ObjectID($id); $result = Work::raw(function($collection) use ($id) { return $collection->aggregate( array( array('$match' => array( "_id" => $id )), array('$project' => array( "Monto" => array('$sum' => '$Abonos.Monto') ) ) ) ); }); }