从路由访问id

时间:2017-06-24 06:45:58

标签: php laravel

我和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进行核实,那就可以了。

我错过了什么吗?

1 个答案:

答案 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') )
                )
            )
        );
    });
}