gpt4 book ai didi

php - 通过 PersistentCollection 对结果进行排序

转载 作者:行者123 更新时间:2023-11-29 20:49:21 28 4
gpt4 key购买 nike

我有一个函数可以获取今天所有的“网络旅游”。

我有一个像这样的自定义存储库:

public function toursTodayByNetwork($network){

$todayStart = \DateTime::createFromFormat( "Y-m-d H:i:s", date("Y-m-d 00:00:00") );
$todayEnd = \DateTime::createFromFormat( "Y-m-d H:i:s", date("Y-m-d 23:59:59") );

return $this->getEntityManager()
->createQuery(
'SELECT p FROM AppBundle:Tour p JOIN AppBundle:Schedule s WHERE p.id = s.tour AND p.network = :network AND s.start >= :todayStart AND s.start <= :todayEnd'
)
->setParameter('todayStart',$todayStart)
->setParameter('todayEnd',$todayEnd)
->setParameter('network',$network)
->getResult();

}

Tour 实体与 Object 实体具有 OneToMany 关系。

我现在想按 AppBundle:Object 中的 filiale 列对整个内容进行排序,正如您所看到的,它不在查询中,所以我不能简单地只需ORDER BY

我尝试过

/**
* @ORM\OneToMany(targetEntity="Object", mappedBy="tour")
* @ORM\OrderBy({"filiale" = "DESC"})
*/
protected $object;

但这并没有改变任何事情。

THIS看起来像是我必须做的事情,但我不明白将 EventListener 放在哪里?我还相信我可能只需要更改查询?

最佳答案

您必须加入您的对象表:

public function toursTodayByNetwork($network){

$todayStart = \DateTime::createFromFormat( "Y-m-d H:i:s", date("Y-m-d 00:00:00") );
$todayEnd = \DateTime::createFromFormat( "Y-m-d H:i:s", date("Y-m-d 23:59:59") );

return $this->getEntityManager()
->createQuery(
'SELECT p FROM AppBundle:Tour p JOIN p.schedule s JOIN p.object o WHERE p.network = :network AND s.start BETWEEN :todayStart AND :todayEnd ORDER BY o.filiale DESC'
)
->setParameter('todayStart',$todayStart)
->setParameter('todayEnd',$todayEnd)
->setParameter('network',$network)
->getResult();

}

对于日期条件,BETWEEN 是更好的做法,因为 >= AND <=。

关于php - 通过 PersistentCollection 对结果进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38182931/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com