Symfony: Query Builder: Catchable Fatal Error: Объект класса DateTime не может быть преобразован в строку - PullRequest
0 голосов
/ 02 сентября 2018

Я пытаюсь выполнить запрос в Symfony 3, чтобы выбрать «Комментарии к желанию» (объект Wishcom) с включённым contribType (объект ContributionType) благодаря JOIN.

При запуске веб-страницы я получаю:

Ошибка: Метод Doctrine \ ORM \ Query \ Expr \ Func :: __ toString () не должен вызывать> исключение, перехвачено Symfony \ Component \ Debug \ Exception \ ContextErrorException:> Catchable Fatal Error: объект класса DateTime не может быть преобразован в> строку

На форумах я понял, что дату и время нужно конвертировать в формат. Дело в том, что я не манипулирую датой напрямую с помощью своего запроса, хотя знаю, что в моем объекте Wishcom есть один атрибут DateTime.

Стоит ли специально выбирать дату и форматировать ее? В таком случае это должно быть сделано? Или ошибка происходит от чего-то еще?

Кажется, ошибка происходит из-за оператора where и функции ToString из Expr, которая не может преобразовать дату. Я не знаю, что мне делать.

$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 голосов
/ 03 сентября 2018

Я нашел другой способ выполнения запроса, и он работает. Вместо того, где у меня было с expr (), которая была проблема, я сделал следующее:

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

Но я до сих пор не знаю, почему я вообще получил ошибку.

...