我有一個物體Article是自我參考的。
Article {
//primary key
private $id。
//unique
private $slug;
/**。
* @ORMManyToMany(targetEntity=self::class, inversedBy="parents")
* @ORMJoinTable(
* name = "article_article",
* joinColumns = {@ORMJoinColumn(name = "article_source", referencedColumnName = "id")},
* inverseJoinColumns = {@ORMJoinColumn(name = "article_target", referencedColumnName = "id")}.
* )
*/
private ? Collection $children。
/**?
* @ORMManyToMany(targetEntity=self::class, mappedBy="children")
*/
private ? Collection $parents。
}
我從請求中得到文章的標題,我需要得到這個標題的所有相關文章。 我試圖用dql來做這件事,但即使是簡單的查詢
。$queryBuilder = $this->createQueryBuilder('a'/span>) 。
$queryBuilder->where('a.children = 1')。
給了我
錯誤。無效的PathExpression。StateFieldPathExpression或SingleValuedAssociationField預期。"
所以我需要這個sql
select a. slug from article a where a.id in ()
select aa.article_target from article a2 inner join article_article aa on a2.id = aa.article_source
where a2.slug = 'article_slug')
)
翻譯成dql,誰能幫幫我? 我怎樣才能從dql中找到表article_article呢?
。p.s. 這個變體是有效的,但不適合我,因為一些原因,我需要dql
。$article = $repository-> findOneBy($criteria) 。
$children = $article->getChildren()。
uj5u.com熱心網友回復:
在Doctrine查詢生成器中,你使用物體(PHP類值)作為引數。你想找到在其父/子的Collection中擁有一個特定Article的文章。你想使用MEMBER OF運算子。
存盤庫:
public function findOneBySlug($slug) 。? Article: ?
{
return $this->createQueryBuilder('a'/span>)
->andWhere('a.slug = :val')
->setParameter('val'/span>, $slug)
->getQuery()
->getOneOrNullResult()
;
}
public function findChildrenOf(Article $article)
{
return $this->createQueryBuilder('a'/span>)
->where(':art MEMBER OF a.parent')
->setParameter('art', $article)
->getQuery()
->getResult()
;
}
public function findParentsOf(Article $article)
{
return $this->createQueryBuilder('a'/span>)
->where(':art MEMBER OF a.children')
->setParameter('art', $article)
->getQuery()
->getResult()
;
}
控制器:
$article = $repository-> findOneBySlug($slug) 。
$children = $repository-> findChildrenOf($article);
$parents = $repository->findParentsOf($article)。
Doctrine將自動確定它需要查詢的欄位和表,并為配置的資料庫建立查詢。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/328348.html
標籤:
下一篇:<p>試圖用一個表單和ajax請求來注冊一個新用戶(因為它將成為一個模式化的表單),在試圖驗證表單時遇到了障礙。當請求被處理時,它指出用戶在密碼驗證器中為空。我不明白如何通過這一點或允許這
