我已经使用注释作为将文档的Id作为MongoBinData对象
namespace ProfileUserBundleDocument;
use DoctrineODMMongoDBMappingAnnotations as MongoDB;
/**
* User Document
*
*@MongoDBDocument(
* collection="Users",
* repositoryClass = "ProfileUserBundleDocumentUsersRepository"
* )
*
* @author ahmedhamdy
*/
class Users {
/**
*
* @var bin_uuid
*
* @MongoDBId(strategy = "UUID")
*
*/
protected $id;
/**
*
* @var string
*
* @MongoDBField(type = "string",name = "Email")
*
*/
protected $email;
//...
当我试图通过电子邮件从MongoDB获取对象时,比如:
$dm = $this->get('doctrine_mongodb')->getManager();
$user = $dm->getRepository('ProfileUserBundle:Users')->findOneBy(array(
'email' => 'xxxx@hotmail.com',
));
var_dump($user);
然后抛出异常:
ContextErrorException: Warning: Illegal offset type in /var/www/xxxxx/vendor/doctrine/mongodb-odm/lib/Doctrine/ODM/MongoDB/UnitOfWork.php line 1544
- 如何使用MongoBinData对象
- 如何从MongoBinData对象类型中插入id为的新Users对象
- 有什么方法可以将MongoBinData对象转换为字符串吗
此功能目前正在PR#444中进行开发。PR中引入的测试用例还将演示如何对标识符字段使用特殊类型,直到我们有机会在文档中编写新的示例。
关于将MongoBinData转换为字符串值,您应该访问$bin
属性,而不是使用MongoBinData::__toString()。__toString()
方法在将MongoBinData强制转换为字符串时也会调用,它将返回"<Mongo Binary Data>"
,而不考虑其中存储的二进制数据。