我正在用symfony 3.4开发应用程序。我想执行一个特定的查询。所以我有两个实体:第一个是PrPurchaseRequest
。第二个是PrSpecificFieldValue
。
PrPurchaseRequest
有oneToMany
prSpecificFieldValues
。
我想获取PurchaseRequest和prSpecificFieldValues的ID
我做到了
$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 ');
那对我不起作用
[语法错误]错误:预期的字符串结尾,得到了 “开”
我该怎么办
答案 0 :(得分:0)
使用理论,您需要围绕您的实体及其与其他实体的映射进行操作,以便像
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;
}
现在您已经定义了实体之间的关系,您可以根据它们的映射(在PrPurchaseRequest类上定义的prSpecificFieldValues)将它们加入,例如
其DQL (DQL!= SQL)
SELECT p,v
FROM PrPurchaseRequest p
JOIN p.prSpecificFieldValues v
无需指定ON
子句学说将为您处理。