簡體   English   中英

我如何排序該學說查詢返回的實體對象的數組?

[英]How could I sort the array of entity objects returned by this doctrine query?

對於以下路線,我想返回當前日期或之后的事件列表-但是我遇到了問題,因為我只知道該怎么做:

  1. 返回按日期排序的所有對象
  2. 在“今天”之后返回所有對象

...但是我不知道如何一起做。

下面是我當前的代碼:

控制者

namespace AppBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use AppBundle\Entity\Events;


class DefaultController extends Controller
{
    /**
    * @Route("/events", name="events")
    */
    public function eventsAction(Request $request)
    {
      $calendar = $this->getDoctrine()->getRepository('AppBundle:Events')->findAll();

      $criteria = new \Doctrine\Common\Collections\Criteria();
      $criteria->where($criteria->expr()->gt('eventdate',new \DateTime('now') ));

      $list=$calendar->matching($criteria);

      if (!$calendar) {
            throw $this->createNotFoundException('No event found for ID ',$list);
      }

      return $this->render('default/events.html.twig', array(
            'title' => 'Events',
             'list' => $list,
             'message' => '',
      ));
    }
}

實體儲存庫

namespace AppBundle\Entity\Repository;

use Doctrine\ORM\EntityRepository;

class EventRepository extends EntityRepository
{
    public function findAll()
    {
        return $this->findBy(array(), array('eventdate' => 'ASC'));
    }
}

活動實體

namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;

/**
 * Events
 *
 * @ORM\Table(name="Events")
 * @ORM\Entity
 * @ORM\Entity(repositoryClass="AppBundle\Entity\Repository\EventRepository")
 */
class Events
{
    /**
     * @var \DateTime
     *
     * @ORM\Column(name="EventDate", type="date", nullable=false)
     */
    private $eventdate;

     /* .... */
}

//在您的存儲庫中

public function getAllFutureEvents()
{
     return $this->getEntityManager()->createQuery(
        'SELECT b FROM AppBundle:Event e
        WHERE e.eventdate > CURRENT_DATE()
        ORDER BY e.eventdate DESC'
    )->getResult();
}

//在您的控制器中:

$events = $this->getDoctrine()->getRepository('AppBundle:Events')->getAllFutureEvents();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM