Прослушиватель Symfony ElasticaBundle и query_builder_method

Мне нужно загрузить в эластичный, когда я создал объект Lead, только те, кто имеет статус утвержден, это мое, отображение:

                 persistence:
                      driver: orm
                      model: Artel\ProfileBundle\Entity\Lead
                      provider:
                        query_builder_method: createIsActiveQueryBuilder
                      listener: ~
                      finder: ~

и мой query_builder_method: createIsActiveQueryBuilder:

public function createIsActiveQueryBuilder()
{
    $qb = $this->getEntityManager()->createQueryBuilder('d');

    $qb
        ->select('d')
        ->from('ArtelProfileBundle:Lead', 'd')
        ->where('d.statusLead = :status')
        ->setParameter('status', 'approved')
    ;

    return $qb;
}

Когда я запускаю, у меня есть статус одобренной загрузки

app/console fos:elastica:populate --no-reset

созданный свинец

    $lead = new Lead();
    //some logic
    $manager->persist($lead);
    $manager->flush();

Но когда я создаю новый Лид со статусом по умолчанию "not_approved", этот Лидж загружен в эластичный файл, почему я не понимаю, как этот лэнд загружается слушателем, почему не работает query_builder?

1 ответ

Я добавляю в эластичный конфиг indexable_callback и создаю в классе сущности функцию isPublished, и когда я создал новый потенциальный статус со статусом not_approved, этот потенциальный заказ не загружается в эластичный объект. И это очень хорошо - когда я меняю статус "одобрено" - отправление загружено в эластик, затем я изменяю статус для not_approved и отводится удаление в эластик. Это победа

    public function isPublished()
{

    if ($this->getStatusLead() === self::STATE_TO_BE_INDEXED_IN_ELA) {
        return true;
    }
    return false;
}

        lead:
        finder: ~
        types:
            lead:
                 indexable_callback: 'isPublished'
                 mappings:
                      id:
                          type: integer
                     persistence:
                      driver: orm
                      model: Artel\ProfileBundle\Entity\Lead
                      provider:
                        query_builder_method: createIsActiveQueryBuilder
                      listener: ~
                      finder: ~
Другие вопросы по тегам