我为我的游戏文档
获得了这个结构游戏文档。
{ "_id" : ObjectId( "51043d468ead0e0757000006" ),
"active" : true,
"created" : 1359232326,
"difficulty" : 0,
"map" : { "$ref" : "Map",
"$id" : ObjectId( "5103c0228ead0e3764000000" ),
"$db" : "mydb" },
"mode" : "coop",
"players" : [
{ "$ref" : "User",
"$id" : ObjectId( "50d83abf038054b560000000" ),
"$db" : "mydb" } ],
"title" : "testgame" }
现在我想在此游戏中添加其他玩家,这就是我尝试过的
$user = $this->get('doctrine_mongodb')
->getRepository('FantasytdUserBundle:User')
->findById($userId);
$db->createQueryBuilder()
->update()
->field('id')->equals($gameId)
->field('players')->push($user)
->getQuery()
->execute();
另外
$user = array_pop($user->toArray());
没有运气,我得到的只是
“不允许使用零长度密钥,您是否使用带双引号的$?”
在我的学说文档中,玩家被定义为对用户的引用。
答案 0 :(得分:0)
AFAIK主义2不能推文件。你应该准备数组: 尝试这样的事情:
$user = $this->get('doctrine_mongodb')
->getRepository('FantasytdUserBundle:User')
->findById($userId);
$user_data = array("$ref" => "User",
"$id" : $user->getId(), // Or new \MongoId($userId)
"$db" : "mydb");
$db->createQueryBuilder()
->update()
->field('id')->equals($gameId)
->field('players')->push($user_data)
->getQuery()
->execute();