Doctrine -Matching сущностей по общему атрибуту (OneToMany & ManyToMany) - PullRequest
0 голосов
/ 24 мая 2018

Я пытаюсь сопоставить две сущности на основе набора критериев, но я не могу заставить его работать в данном конкретном случае.

Для примера, скажем, у меня есть:

Статья с N тегами Категория с 1 тегом

Я бы хотел сделать в моем хранилище что-то вроде:

$this->createQueryBuilder('article')
  ->join('App\Enttiy\Category', 'c', Join::WITH, 'c.id = :category_id)
  ->where('c.tag IN article.tags')
  ->andWhere(':category_id', $category->getId())
  ->getQuery()
  ->getResult();

Конечно, в этомНапример, самым простым способом было бы определить отношения между моими объектами, но в моем реальном случае эти отношения были бы кошмаром.

Проблема, с которой я сталкиваюсь, - это строка where, поскольку предложение IN нене работает таким образом.

Кто-нибудь имеет представление о том, как я мог бы использовать DQL для этого?:)

Заранее спасибо

1 Ответ

0 голосов
/ 24 мая 2018

Прежде всего ваш andWhere не будет работать, вам нужно вместо этого использовать ->setParameter(), например:

$this->createQueryBuilder('article')
  ->join('App\Enttiy\Category', 'c', Join::WITH, 'c.id = :category_id')
  ->where('c.tag IN article.tags')
  ->setParameter('category_id', $category->getId())
  ->getQuery()
  ->getResult();

После того, как вы забыли ' в вашем join, здесь: 'c.id = :category_id, я добавил его в своем примере (не знаю, является ли это ошибкой ввода).

Пожалуйста, попробуйте с этим и скажите мне, если у вас снова есть ошибка, и если у вас есть ошибка, пожалуйста,скажи мне, что это.

...