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

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

Войти через центр авторизации
Похожие вопросы