Задать вопрос
Ответы пользователя по тегу Doctrine ORM
  • Как правильно построить запрос на Doctrine 2 + Symfony 2?

    @curator
    Можно сделать связь OneToOne двусторонней:

    // Entity1, она же table1
    /**
     * @OneToOne(targetEntity="Entity2", mappedBy="parent")
     */
    private $child;
    
    // Entity2, она же table2
    /**
     * @OneToOne(targetEntity="Entity1", inversedBy="child")
     * @JoinColumn(name="table1_id", referencedColumnName="id")
     */
    private $parent;


    И тогда:

    $getParams = $this->getRequest()->query->all();
    
    $params = array_filter($getParams, function($el) {
        return !empty($el);
    });
    
    $queryBuilder = $this->getDoctine()
        ->getRepository('Entity1')
        ->createQueryBuilder('t')
        ->leftJoin('t.child', 'e');
    
    foreach ($params as $key => $val)
    {
        $where = sprintf('e.%s = :%s', $key, $key);
    
        $queryBuilder
            ->andWhere($where)
            ->setParameter($key, $value);
    }
    
    $res = $queryBuilder
        ->getQuery()
        ->getResult();

    Как-то так.
    Ответ написан
    Комментировать