, будучи великим новичком Symfony и, следовательно, доктриной, у меня проблема с двумя запросами, которые мне нужно сделать.
У меня есть таблица User, которая содержит отношение ManyToMany с сущностью Packages. (Создание таблицы "packagesDDLUser")
В моей сущности пользователя у меня есть поле "пакеты".
Мои пользователи скачивают пакеты. Когда это происходит, загруженный пакет вставляется в базу данных в объекте «packagesDDLUser», например «user_id, package_id».
То, что я хочу сделать, это иметь возможность отображать на странице список пакетов, которые не являются частью пакетов, с которыми пользователь уже связан.
Обычно, когда пользователь загружает пакет, его бесполезно отображать в списке тех, которые можно загрузить.
У меня есть два запроса. Тот, который будет собирать пакеты, загруженные пользователем с параметром id пользователя. И еще один, который должен выбрать список пакетов, которые не принадлежат этому списку.
Итак, я:
public function getPackagesUser($id)
{
$queryBuilder = $this->createQueryBuilder("u")
->select("u.packages")
->where("u.id = :id")
->setParameter("id", $id);
return $queryBuilder->getQuery()->getResult();
}
Но у меня есть эта ошибка:
[Семантическая ошибка] строка 0, столбец 9 рядом с «пакетами ОТ»: ошибка: недействительный
PathExpression. Должно быть StateFieldPathExpression.
И мой второй запрос:
public function getPackagesNotUser($packagesUser)
{
$qb = $this->createQueryBuilder('p');
$queryBuilder= $qb->where($qb->expr()->notIn('p.id', array_column($packagesUser, 'id')));
return $queryBuilder->getQuery()->getResult();
}
Может ли кто-нибудь помочь мне? Я не очень разбираюсь в Доктрине, она довольно новая для меня
Спасибо
EDIT:
Хорошо, теперь у меня есть: controller.php
$user = $this->getUser();
$packagesUser = $user->getPackages()->toArray();
$packagesView = $this->getDoctrine()->getRepository('PagesBundle:Paquet')->getPackagesNotUser($packagesUser);
Репозиторий:
public function getPackagesNotUser($packagesUser)
{
$qb = $this->createQueryBuilder('p');
$queryBuilder= $qb->where($qb->expr()->notIn('p.id', array_column($packagesUser, 'id')));
return $queryBuilder->getQuery()->getResult();
}
Но у меня есть эта ошибка
[Синтаксическая ошибка], строка 0, столбец 65: ошибка: ожидаемый литерал, получен ')'
Об этом:
return $ queryBuilder-> getQuery () -> getResult ();