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

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

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽
24 апр. 2024, в 14:02
5000 руб./за проект
24 апр. 2024, в 13:45
15000 руб./за проект
24 апр. 2024, в 13:32
300 руб./за проект