在我Symfony3項目,我確實有一些文件,如用戶,說明如下:獲取在Symfony3庫中創建MongoDB的文檔的ID
UserBundle\Document\User:
repositoryClass: UserBundle\Repository\UserRepository
fields:
userId:
id: true
email:
type: string
firstName:
type: string
lastName:
type: string
一段時間,我想創建一個用戶文檔通過用戶存儲庫。 圍繞createQueryBuilder()工作,我已經建立了這個方法:
public function insert($email, $firstName, $lastName)
{
$data = array('email' => $email,
'firstName' => $firstName,
'lastName' => $lastName,
);
/* Create query */
$query = $this->createQueryBuilder();
/* Add Data */
$query
->insert()
->setNewObj($data);
/* Return */
$query
->getQuery()
->execute();
return true;
}
而不是返回true
,我想回到我剛剛創建文件的ID。
爲了尋找答案,我發現這段代碼:
$this->getDocumentManager()->getConnection()->lastInsertId
不幸的是,它沒有返回我所期待的:
object(MongoDB)[307]
public 'w' => int 1
public 'wtimeout' => int 10000
感謝您的幫助!
編輯:
這裏是在接受的答案提出的建議更新代碼:
public function insert($email, $firstName, $lastName)
{
$id = new MongoId();
$data = array(
'_id' => $id,
'email' => $email,
'firstName' => $firstName,
'lastName' => $lastName,
);
/* Create query */
$query = $this->createQueryBuilder();
/* Add Data */
$query
->insert()
->setNewObj($data);
/* Return */
$query
->getQuery()
->execute();
return $id->__toString();
}