相关疑难解决方法(0)

在带有DQL的WHERE子句中使用DATE()函数

执行此DQL查询时出现奇怪的错误:

SELECT u FROM User u LEFT JOIN u.schedule s WHERE DATE(s.timestamp) = DATE(NOW())
Run Code Online (Sandbox Code Playgroud)

Doctrine抛出异常并显示以下消息:

Expected known function, got 'DATE'
Run Code Online (Sandbox Code Playgroud)

该问题看起来与此错误类似,但是它解决了GROUP BY子句中的DATE()函数,并且对于Doctrine 2.2,该错误已关闭.此时,我得到了doctrine 2.4-DEV的例外.

该查询旨在选择今天安排的所有用户.有什么方法可以创建这个DQL吗?我在phpMyAdmin中测试了SQL版本,并且查询不会引发错误.可能有什么问题?

doctrine dql doctrine-orm

13
推荐指数
1
解决办法
1万
查看次数

Doctrine的日期字段 - 如何编写查询

我正在使用Symfony2和Doctrine.

我有一个日期字段,这里是:

/**
  * @ORM\Column(type="date")
  */
 protected $date;
Run Code Online (Sandbox Code Playgroud)

在我的表单中,我使用文本字段来避免Chrome默认的datepicker,但我在数据库中插入DateTime对象:

if ($request->isMethod('POST')) {
        $form->bind($request);

        //Convert string date to DateTime object and send it to database as object
        $dateObj = \DateTime::createfromformat('d-m-Y', $expense->getDate());
        $expense->setDate($dateObj);
        // ...
Run Code Online (Sandbox Code Playgroud)

然后我想找到具有特定日期的所有项目:

public function findExpensesForDate($user, $date)
{
    $q = $this
        ->createQueryBuilder('e')
        ->where('e.date = :date')
        ->andWhere('e.user = :user')
        ->setParameter('date', $date)
        ->setParameter('user', $user)
         ->getQuery();

    return $q->getResult();
}
Run Code Online (Sandbox Code Playgroud)

并称之为:

$expenses_for_today = $this->repository->findExpensesForDate($this->user, $today);
Run Code Online (Sandbox Code Playgroud)

什么时候什么都不返

$today = new /DateTime();
Run Code Online (Sandbox Code Playgroud)

并返回结果

$today_obj = new /DateTime();
$today = $today_obj->format('Y-m-d'); 
Run Code Online (Sandbox Code Playgroud)

那么为什么当我将日期作为对象时,这不起作用?是不是使用日期字段的原因是利用DateTime对象的查询?我想我错过了一些微不足道的重要事情,但我看不清楚是什么,或者我不能很好地理解这种情况.我的理解是这样的:字段是date类型,所以我应该在其中插入DateTime对象,在查询时我也应该使用DateTime对象.你能帮我解决这个问题吗?

PS:我尝试将字段更改为datetime:

 /**
  * @ORM\Column(type="datetime") …
Run Code Online (Sandbox Code Playgroud)

date symfony doctrine-orm

2
推荐指数
1
解决办法
7281
查看次数

标签 统计

doctrine-orm ×2

date ×1

doctrine ×1

dql ×1

symfony ×1