Показывать в списке только country_id =1 (Symfony + Sonata)

Это мой простой список сущности «Новости».

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. Как?

Вы используете EasyAdminBundle? Если во всех случаях отредактируйте свой вопрос с дополнительной информацией

qdequippe 05.04.2022 10:54

Извините, я использую Sonata

Leonardo 05.04.2022 11:16
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
2
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Хорошо, я решил с документация

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;
    
}    

Другие вопросы по теме