Это мой простой список сущности «Новости».
protected function configureListFields(ListMapper $list): void
{
$list
->filte
->add('id')
->add('name')
->add('description')
->add('createdAt')
->add('updatedAt')
->add(ListMapper::NAME_ACTIONS, null, [
'actions' => [
'show' => [],
'edit' => [],
'delete' => []
],
]);
}
Сущность News также имеет поле country_id (не буду показывать). Мне нужно показывать только новости с country_id = 1. Как?
Извините, я использую Sonata
Хорошо, я решил с документация
protected function configureQuery(ProxyQueryInterface $query): ProxyQueryInterface
{
$query = parent::configureQuery($query);
$rootAlias = current($query->getRootAliases());
$query->andWhere(
$query->expr()->eq($rootAlias . '.my_field', ':my_param')
);
$query->setParameter('my_param', 'my_value');
return $query;
}
Но необходимо внести несколько изменений, поскольку $query не является объектом QueryBuilder.
protected function configureQuery(ProxyQueryInterface $query): ProxyQueryInterface
{
$query = parent::configureQuery($query);
$query_qb = $query->getQueryBuilder();
$rootAlias = current($query->getQueryBuilder()->getRootAliases());
$query_qb->andWhere(
$query_qb->expr()->eq($rootAlias . '.idCountry', ':idCountry')
);
$query_qb->setParameter('idCountry', $this->security->getUser()->getCountry()->getId());
return $query;
}
Вы используете EasyAdminBundle? Если во всех случаях отредактируйте свой вопрос с дополнительной информацией