У меня есть две сущности Пользователь и Продукт в отношении ManyToMany. Внутри избирателя я хотел бы дать разрешение на удаление Продукта, если Пользователь находится среди $ product-> getUsers. До сих пор мне удавалось делать подобные вещи
foreach ($user->getProducts() as $userProduct) {
foreach ($userProduct->getUsers() as $productUser) {
if($productUser->getId() === $user->getId()) {
return true;
break;
}
}
}
Пользовательская переменная:
$user = $token->getUser();
, и я проверяю, является ли она:
// if the user is anonymous, do not grant access
if (!$user instanceof UserInterface) {
return false;
}
Каждый пользователь имеет коллекцию продуктов -> каждый продукт в этой коллекции имеет коллекцию пользователей. Я проверяю, присутствует ли идентификатор текущего аутентифицированного пользователя ($ user-> getId ()) среди идентификаторов Коллекции пользователей продукта с кодом:
if($productUser->getId() === $user->getId()) {
return true;
break;
}
, и выхожу из l oop. Если нет, доступ запрещен.
Есть ли лучший, более элегантный и эффективный способ выполнить эту задачу? Любой встроенный Symfony метод, который я должен использовать для этой цели?