Как присоединиться к Native SQL Query и доктрине

Я разрабатываю приложение с помощью Symfony 3.4. Я хочу выполнить конкретный запрос. Итак, у меня есть две сущности: первая PrPurchaseRequest, второй PrSpecificFieldValue,
PrPurchaseRequest имеет oneToManyprSpecificFieldValues,

Я хочу получить идентификатор покупки Request и prSpecificFieldValues

я это сделал

 $queryBuilder = $this->getEntityManager()->createQuery('select p.id as purchaseId, pr.keyField AS keyField,pr.ID AS prkeyvalueid from '.PrPurchaseRequest::class. ' p LEFT JOIN '. PrSpecificFieldValue::class .' spec ON p.id = spec.purchaseId ');

и это не сработало для меня

[Синтаксическая ошибка] Ошибка: ожидаемый конец строки получил значение "ВКЛ."

как мне это сделать

1 ответ

Используя доктрину, вам нужно поэкспериментировать со своими сущностями и их сопоставлениями с другими сущностями, чтобы связать их как

use Doctrine\Common\Collections\ArrayCollection;

/** @Entity */
class PrPurchaseRequest
{
    /**
     * 
     * @OneToMany(targetEntity="PrSpecificFieldValue", mappedBy="prPurchaseRequest")
     */
    private $prSpecificFieldValues;
    // ...

    public function __construct() {
        $this->prSpecificFieldValues = new ArrayCollection();
    }
}

/** @Entity */
class PrSpecificFieldValue
{
    /**
     *
     * @ManyToOne(targetEntity="PrPurchaseRequest", inversedBy="prSpecificFieldValues")
     * @JoinColumn(name="pr_purchase_request_id", referencedColumnName="id")
     */
    private $prPurchaseRequest;
}

Теперь вы определили отношения между вашими сущностями, и вы можете присоединиться к ним на основе их отображения (prSpecificFieldValues, определенного в классе PrPurchaseRequest), например

Его DQL (DQL! = SQL)

SELECT p,v
FROM PrPurchaseRequest p
JOIN p.prSpecificFieldValues v

Не нужно указывать ON Доктрина оговорок справится с этим для вас.

Один ко многим, двунаправленный

Другие вопросы по тегам