Intereting Posts
Возврат ключей, если 3 соседних значения соответствуют Как заставить .htaccess использовать для маршрутизации, чтобы не маршрутизировать файлы .css, .js, .jpg и т. Д.? продолжить обработку php после отправки ответа HTTP Ошибка входа в систему Google Php Oauth Не удалось найти системный пакет CA PHP – сортировка элементов массива на основе элементов другого массива :) Выбор слов из строки в соответствии с массивом Создание динамических ссылок с PHP / MySQL Автозаполнение jQuery в фоновом режиме ввода текстового поля Как экспортировать определенный столбец в MySQL с помощью phpmyadmin? SQL-инъекция на INSERT Сортировка массива по значению дочернего массива в PHP Функция register_shutdown_function не вызвана Как заменить «:» на «/» в функции slugify? Изменение переменной сеанса PHP между страницами Что это означает в документации: квадратная скобка, за которой следует запятая (

ORM QueryBuilder с субобъектами Entity

У меня есть 2 объекта: автор и человек.

В объекте автора есть поле человека, которое фактически является объектом человека:

/** * @ORM\ManyToOne(targetEntity="Person", inversedBy="submission_authors") * @ORM\JoinColumn(name="person_id", referencedColumnName="id") */ protected $person; 

Теперь, в репозитории: AuthorRepository, я хотел бы найти некоторых авторов по их первому имени. Для этого мне нужно получить доступ к объекту person для соответствующего автора и посмотреть его имя.

Я пытался:

  public function searchAuthors($q) { $authQB = $this->createQueryBuilder( 'a' ) ->select('a') ->where("a.person.firstname LIKE '%".$q."%'"); return $authQB->getQuery()->getResult(); } 

Но проблема в том, что я получаю сообщение об ошибке:

  [Syntax Error] line 0, col 78: Error: Expected Doctrine\ORM\Query\Lexer::T_LIKE, got '.' 

Coud, пожалуйста, помогите мне, как это решить?

Вам нужно будет получить доступ к своим отношениям:

 $authQB = $this->createQueryBuilder( 'a' ) ->select('a') ->leftJoin('a.person', 'p') //... 

Чтобы узнать немного больше о построителе запросов и совместных таблицах:

  • Это сообщение.

Пытаться

 $authQB = $this->createQueryBuilder( 'a' ) ->select('a') ->innerJoin('a.person', 'p') ->where('p.firstname LIKE :myStuff') ->setParameter('myStuff', '%'.$q.'%');