为什么我有空的嵌套实体?我有索引天赋。在数据库人才有嵌套用户的情况下,当我现在更新或创建人才时,它不会在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兼容)
请帮帮忙
发布于 2016-02-26 05:51:51
你必须用这个:
use Doctrine\Common\Persistence\Event\LifecycleEventArgs;忘了那个吧:
use Doctrine\Common\EventArgs;(该原则中有一些更新;)
https://stackoverflow.com/questions/34393410
复制相似问题