Doctrine2 findBy объект отношения вызывает ошибку преобразования строки

Скажем, у меня есть два объекта в Doctrine2, которые связаны друг с другом, Модели \ Пользователь и Модели \ Комментарий. Если я сделаю это в Doctrine 2.0.0 …

<?php // $em instanceof EntityManager, $user instanceof Models\User $comments = $em->getRepository('Models\Comment') ->findBy(array('user' => $user, 'public' => true)); 

… Я получаю ошибку PHP:

Уровень важности: уведомление

Сообщение: Объект класса Модели \ Пользователь для преобразования строк

Имя файла: DBAL / Connection.php

Номер строки: 574

Этого не должно быть, правда? Если я использую QueryBuilder и setParameter ('user', $ user), он работает так, как ожидалось.

Solutions Collecting From Web of "Doctrine2 findBy объект отношения вызывает ошибку преобразования строки"

Запрос по отношениям разрешен, но вам необходимо передать идентификатор. Запрос по объекту еще не поддерживается и будет только в 2.1.

 <?php // $em instanceof EntityManager, $user instanceof Models\User $comments = $em->getRepository('Models\Comment') ->findBy(array('user' => $user->getId(), 'public' => true)); 

К сожалению, я не думаю, что запрос по отношениям поддерживается напрямую через объекты репозитория.

В этом случае вы, вероятно, лучше всего написать собственный класс репозитория с помощью метода findByUser.

 <?php namespace App\Domain\Repository; use Doctrine\ORM\EntityRepository, App\Domain\Entity\User; class CommentRepository extends EntityRepository { public function findByUser(User $user) { // add QueryBuilder code here } } 

Не забудьте обновить объект Comment для использования настраиваемого репозитория:

 <?php namespace App\Domain\Entity; /** * @Entity(repositoryClass="App\Domain\Repository\CommentRepository") */ class Comment { // entity definition }