【问题标题】:Query reference documents ODM Doctrine2查询参考文档 ODM Doctrine2
【发布时间】:2013-12-06 18:06:52
【问题描述】:

我有两个文件 CarDriver

/**
* @ODM\Document(collection="cars")
*/
class Car { 
    /**
     * @ODM\Id
     */
    protected $id;

    /**
     * @ODM\ReferenceOne(targetDocument="Driver")
     */
    protected $driver;

    //...
}

/**
* @ODM\Document(collection="drivers")
*/
class Driver { 
    /**
     * @ODM\Id
     */
    protected $id;

    /**
     * @ODM\String
     * @Assert\NotBlank()
     */
    protected $name;

    //...
}

我想要一辆由“彼得”驾驶的汽车

$car = $dm
  ->getRepository('Car')
  ->createQueryBuilder()
  ->field('driver.name')->equals("Peter")
  ->getQuery()->getSingleResult();

但即使CarDriver 存在于数据库中,前面的代码也会返回NULL

我找到了similar question我想知道这个缺点是否可以通过其他方式解决

【问题讨论】:

    标签: php mongodb symfony doctrine-orm


    【解决方案1】:

    试试这个

    $car = $dm
    ->getRepository('Car')
    ->createQueryBuilder()
    ->where('driver.name =?1')
    ->setParameter(1, 'Peter')
    ->getQuery()->getSingleResult();
    

    编辑:

    如果司机 Peter 拥有不止一辆汽车,您应该使用 ->getOneOrNullResult() 而不是 getSingleResult()

    【讨论】:

      猜你喜欢
      • 2012-06-11
      • 1970-01-01
      • 1970-01-01
      • 2013-10-08
      • 2019-08-04
      • 2015-07-06
      • 1970-01-01
      • 2012-05-13
      • 1970-01-01
      相关资源
      最近更新 更多