doctrine-mongoDB - ContextErrorException:警告:非法偏移

时间:2014-01-08 18:21:59

标签: mongodb symfony doctrine-orm symfony-2.3 doctrine-odm

我使用注释作为

将文档的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
  • 如何使用MongoBinData对象???
  • 如何从MongoBinData类型的对象中插入带有id的新Users对象?
  • 有没有办法将MongoBinData对象转换为字符串??

1 个答案:

答案 0 :(得分:1)

此功能目前正在PR #444中使用。该PR中引入的测试用例还将演示如何在标识符字段中使用特殊类型,直到我们有机会在文档中编写新的示例。

关于将MongoBinData转换为字符串值,您应该访问$bin属性而不是MongoBinData::__toString()。在将MongoBinData强制转换为字符串时也调用的__toString()方法将返回"<Mongo Binary Data>",而不管存储在其中的二进制数据。