由于加入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()
;
}
}
答案 0 :(得分:0)
我发现了执行查询的另一种方法,它可以工作。 代替了问题所在的expr(),我做了以下工作:
$queryBuilder->where('w.wish = :wish')->setParameter('wish', $wish);
但是我仍然不知道为什么我首先遇到了错误。