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

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

Похожие вопросы
FoodSoul Калининград
от 180 000 до 250 000 ₽
IT-Spirit Москва
от 230 000 до 320 000 ₽
от 200 000 до 290 000 ₽