Symfony:查询生成器:可捕获的致命错误:DateTime类的对象无法转换为字符串

时间:2018-09-02 17:54:06

标签: symfony datetime query-builder

由于加入JOIN,我试图在Symfony 3中进行查询,以选择一个Wish(对象Wishcom)的注释,其中包括了贡献类型(对象ContributionType)。

运行网页时,我得到:

  

错误:方法Doctrine \ ORM \ Query \ Expr \ Func :: __ toString()不得抛出异常,已捕获Symfony \ Component \ Debug \ Exception \ ContextErrorException:>可捕获的致命错误:DateTime类的对象不能为转换为> string

在论坛上,我知道日期时间必须转换为格式。事实是,尽管我知道Wishcom对象中有一个DateTime属性,但我没有直接用查询操作日期。

我应该专门选择日期并将其格式化吗?在那种情况下应该这样做吗?还是错误是由其他原因引起的?

似乎错误来自where语句和Expr中的ToString函数无法转换日期。我不知道该怎么办。

$queryBuilder->where($queryBuilder->expr()->in('w.wish', $wish));

这是我在控制器中的呼叫:

$arraywishcom=$em->getRepository(Wishcom::class)->getWishcomWithContributionType($wish);

我的存储库:

<?php

namespace Shaker\JRQBundle\Repository;

use Shaker\JRQBundle\Entity\Wish;
/**
 * WishcomRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class WishcomRepository extends \Doctrine\ORM\EntityRepository
{

    public function getWishcomWithContributionType(Wish $wish) {

        $queryBuilder = $this
    ->createQueryBuilder('w')
    ->leftJoin('w.contributiontype', 'contributiontype')
    ->addSelect('contributiontype')
    ;

    $queryBuilder->where($queryBuilder->expr()->in('w.wish', $wish));

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

1 个答案:

答案 0 :(得分:0)

我发现了执行查询的另一种方法,它可以工作。 代替了问题所在的expr(),我做了以下工作:

$queryBuilder->where('w.wish = :wish')->setParameter('wish', $wish);

但是我仍然不知道为什么我首先遇到了错误。