我试图找到Symfony和Doctrine的脚,虽然我猜它远非优雅,但我设法让下面的工作 IF 我使用findall()
。我的主要问题是我试图只返回尚未发生的事件。以下是我尝试使用expr()->gr()
:
我的控制器:
namespace AppBundle\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use AppBundle\Form\Type\RegistrationType;
use AppBundle\Form\Model\Registration;
use AppBundle\Entity\Events;
use Doctrine\ORM\EntityRepository;
class DefaultController extends Controller
{
/**
* @Route("/events", name="events")
*/
public function eventsAction(Request $request)
{
$calendar = $this->getDoctrine()
->getRepository('AppBundle:Events');
$criteria = new \Doctrine\Common\Collections\Criteria();
$criteria->where($criteria->expr()->gt('EventDate',date('Y-m-d H:i:s') ));
$list=$calendar->matching($criteria);
return $this->render('default/events.html.twig', array(
'title' => 'Events',
'list' => $list,
));
}
}
我的Events.php
实体是:
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* Events
*
* @ORM\Table(name="Events")
* @ORM\Entity
*/
class Events
{
/**
* @var \DateTime
*
* @ORM\Column(name="EventDate", type="date", nullable=false)
*/
private $eventdate;
当我尝试加载页面时,我得到了:
无法识别的字段:EventDate
我认为这是一个区分大小写的问题?我在我的数据库(EventDate
)和我的Events
实体注释中指定了name="EventDate"
。我已经尝试将private $eventdate
更改为private $EventDate
,但这会让我看起来更加严重,所以我很快就退缩了:
DateType.php第53行中的FatalErrorException:错误:在非对象上调用成员函数format()
答案 0 :(得分:0)
我没有使用标准的经验,但使用Doctrine查询语言(DQL)很容易实现。
$em = $this->getDoctrine()->getManager();
$result = $em->createQuery(
'SELECT e FROM AppBundle:Events e
WHERE e.eventdate > :date'
)
->setParameter(':date', $date)
->getResult();
$date
必须是\DateTime
的实例。