如何加入本机 SQL 查询和原则



我正在开发一个用symfony 3.4的应用程序。我想执行一个特定的查询。所以我有两个实体:第一个是PrPurchaseRequest。第二个是PrSpecificFieldValue.
PrPurchaseRequestoneToManyprSpecificFieldValues.

我想获取购买请求和 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 ');

这对我不起作用

[语法错误] 错误:字符串的预期结尾,已获取 "开">

我该怎么做

使用学说,您需要绕过您的实体及其与其他实体的映射,以便将它们联系起来,例如

use DoctrineCommonCollectionsArrayCollection;
/** @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条款原则将为您处理此问题。

一对多,双向

相关内容

  • 没有找到相关文章

最新更新