@Jailbird

Doctrine — как отфильтровать (where) результат по полю ManyToOne?

Здравствуйте. Никак не могу найти вариант того, как отфильтровать результаты запроса, построенного с помощью Query Builder. В одной из моделей есть поле user_id
/**
     * @ManyToOne(targetEntity="Users")
     * @JoinColumn(name="user_id", referencedColumnName="id", nullable=true)
     */
    private $user;

, но когда я пытаюсь добавить условие
$qb->where('mc.user_id = :user');
, то появляется ошибка "... has no field or association named user_id"

Я могу заставить это работать, приджоинив соответственно таблицу Users и добавив условие на id из нее... Но как-то мне это кажется неправильным - я фактически делаю ненужный джоин.
  • Вопрос задан
  • 2871 просмотр
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
$qb->where('mc.user = :user')
Вы должны оперировать в DQL/Querybuider-е только теми полями, которые есть в вашем объекте. Иначе толку от DQL/QueryBuidler, если вам нужно еще и как это все на базу мепится знать.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Jailbird Автор вопроса
Физически это поле есть. И в модели есть (в вопросе указан кусок кода). И создано оно с помощью ORM. Я просто хочу отфильтровать по нему не делая join самой таблицы. Неужели Доктрина не разрешает так делать?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы