gpt4 book ai didi

symfony - 学说2 : custom orderBy clause

转载 作者:行者123 更新时间:2023-12-03 16:28:49 27 4
gpt4 key购买 nike

我想获取一些事件,按这些标准排序和分页:

  • 20公里以内开启事件
  • 不到 20 公里的传入事件
  • 超过 20 公里的开放赛事
  • 超过 20 公里的传入事件

  • 我可以处理打开/传入的订单,但我无法先切断 < 20km,这是我的查询构建器的样子:
    public function fetchByLocation($day, $time, $latitude, $longitude, $page = 1, $itemPerPage = 10)
    {
    if(!$page) {
    $page = 1;
    }

    $qb = $this->createQueryBuilder('event')
    ->select('event', 'GEO_DISTANCE(:latitude, :longitude, event.latitude, event.longitude) AS distance')
    ->setParameter('latitude', $latitude)
    ->setParameter('longitude', $longitude)
    ->where('(event.day = :day AND event.start >= :time) OR event.day > :day')
    ->setParameter('day', $day)
    ->setParameter('time', $time)
    ->addOrderBy('event.day', 'asc')
    ->addOrderBy('event.start', 'asc');


    $qb->setFirstResult(($page - 1) * $itemPerPage)
    ->setMaxResults($itemPerPage);

    return $qb->getQuery()->getResult();
    }

    这将首先提供打开的事件,任何想法在查询构建器中处理 < 20km 标准?我必须使用 native 查询吗?我可以混合使用吗?

    非常感谢您考虑我的要求:)

    最佳答案

    你想要的是区分“接近”和“远”的事件。
    你应该添加

    ->addSelect('(CASE WHEN distance > 20 then 1 ELSE 0 END) AS is_far')
    ->addOrderBy('is_far ASC')

    关于symfony - 学说2 : custom orderBy clause,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27227232/

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