FOSElasticaBundle Обновление вложенного объекта

Почему у меня пустая вложенная сущность? У меня есть индекс таланта. В базе данных таланта есть вложенный пользователь, и когда теперь, когда я обновляю или создаю талант, он не будет обновляться как вложенный объект в ElasticSearch, и я не понимаю, почему?

fos_elastica:
clients:
default:
host: %elastica_host%
port: %elastica_port%
headers: { Authorization: Basic %elastica_auth_header% }

indexes:
profile:
finder: ~
types:
talent:
mappings:
id:
type: integer
slug:
type: string
description:
type: string
user:
type: "nested"properties:
id: ~
username:
type: string

Я ищу и нахожу о переопределении слушателя postPersist, postUpdate, а также preRemove

fos_elastica.listener.talent:
class: Artel\SiteBundle\EventListener\ElasticaCourseListener
arguments:
- @fos_elastica.object_persister.user.user
- ['postPersist', 'postUpdate', 'preRemove']
- @fos_elastica.indexable
calls:
- [ setContainer, ['@service_container', @fos_elastica.object_persister.profile.talent ] ]
tags:
- { name: 'doctrine.event_subscriber' }

Мой собственный слушатель Artel\SiteBundle\EventListener\ElasticaCourseListener тогда выглядит так:

<?php

namespace Artel\SiteBundle\EventListener;

use Doctrine\Common\EventArgs;
use FOS\ElasticaBundle\Doctrine\Listener as BaseListener;
use FOS\ElasticaBundle\Persister\ObjectPersister;
use Symfony\Component\DependencyInjection\ContainerInterface;
use Artel\ProfileBundle\Entity\Developer;

class ElasticaCourseListener extends BaseListener
{
private $container;
private $objectPersisterSession;

public function setContainer(ContainerInterface $container, ObjectPersister $objectPersisterSession)
{
$this->container = $container;
$this->objectPersisterSession = $objectPersisterSession;
}

public function postUpdate(EventArgs $args)
{
$entity = $args->getEntity();

if ($entity instanceof Developer) {
$this->scheduledForUpdate[] = $entity;
foreach ($entity->getUser() as $session) {
$this->objectPersisterSession->replaceOne($session);
}
}
}
}

Теперь у меня есть ошибка

[Symfony \ Component \ Debug \ Exception \ ContextErrorException] Уведомление о времени выполнения: объявление Artel \ SiteBundle \ EventListener \ ElasticaCourseListener :: postUpdate () должно быть совместимо с FOS \ ElasticaBundle \ Doctrine \ Listener :: postUpdate (Doctrine \ Common \ Persistence \ Event \ LifecycleEventArgs $ eventArgs)

Помогите, пожалуйста

0

Решение

Вы должны использовать это:

use Doctrine\Common\Persistence\Event\LifecycleEventArgs;

Забудь об этом:

use Doctrine\Common\EventArgs;

В Учении есть некоторые обновления;)

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]