Как присоединиться к Native SQL Query и доктрине
Я разрабатываю приложение с помощью Symfony 3.4. Я хочу выполнить конкретный запрос. Итак, у меня есть две сущности: первая PrPurchaseRequest
, второй PrSpecificFieldValue
,PrPurchaseRequest
имеет oneToMany
prSpecificFieldValues
,
Я хочу получить идентификатор покупки 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
Доктрина оговорок справится с этим для вас.