Symfony ElasticaBundle listener and query_builder_method


Symfony ElasticaBundle listener and 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工作?

我添加到弹性配置indexable_callback并在实体类函数中创建是已发布的,当我创建新的潜在客户时,状态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: ~