我使用注释作为
将文档的Id作为MongoBinData对象namespace Profile\UserBundle\Document;
use Doctrine\ODM\MongoDB\Mapping\Annotations as MongoDB;
/**
* User Document
*
*@MongoDB\Document(
* collection="Users",
* repositoryClass = "Profile\UserBundle\Document\UsersRepository"
* )
*
* @author ahmedhamdy
*/
class Users {
/**
*
* @var bin_uuid
*
* @MongoDB\Id(strategy = "UUID")
*
*/
protected $id;
/**
*
* @var string
*
* @MongoDB\Field(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
答案 0 :(得分:1)
此功能目前正在PR #444中使用。该PR中引入的测试用例还将演示如何在标识符字段中使用特殊类型,直到我们有机会在文档中编写新的示例。
关于将MongoBinData转换为字符串值,您应该访问$bin
属性而不是MongoBinData::__toString()。在将MongoBinData强制转换为字符串时也调用的__toString()
方法将返回"<Mongo Binary Data>"
,而不管存储在其中的二进制数据。