Прослушиватель 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: ~