我在我的项目中使用FOSElasticaBundle和Doctrine,我的代码用于使用Doctrine生命周期事件进行选择性索引更新.我遇到的问题是我是否单独更新相关实体.
例如,一个人可能通过多种关系与公司相关.如果我直接通过公司实体更新公司名称,那么与公司相关的人员的索引将过时,并且仍与公司的旧名称相关.
关于如何处理这个我有点迷失,有人有什么建议吗?我是否必须依赖计划的索引更新并同时处理不准确的索引数据,或者我是否可以调用与已更新的实体相关的实体的更新.
我依靠JMSSerializer组来建立映射.我很欣赏这可能不是长期做事的最佳方式.
我有以下代码
public function queryAssociationsSorted($id){
$qb = $this->createQueryBuilder('a')
->leftJoin('a.category', 'c')
->where('a.job = :id')
->setParameter('id', $id)
//->addOrderBy('c.rank', 'DESC')
//->addOrderBy('a.updated', 'DESC')
->add('orderBy','c.rank DESC THEN a.updated DESC')
;
return $query = $qb->getQuery();
}
Run Code Online (Sandbox Code Playgroud)
并且此选项或注释掉的选项都仅按a.updated排序。我看过与此主题有关的其他文章,但找不到解决方案。谁能建议我要去哪里错了?
我已经将实体字段类型添加到我正在使用的表单中,但是当我尝试设置preferred_choices时,我收到以下错误消息
警告:spl_object_hash()期望参数1为object,在/srv/www/amber/public_html/Symfony/vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/Form/Type/DoctrineType.php第98行中给出的字符串
你可以看到下面的代码
$builder->add('candStatus', 'entity', array(
'label' => 'Candidate Status',
'class' => 'AmberAtsBundle:SelCandStatus',
'query_builder' => function(EntityRepository $er) {
return $er->createQueryBuilder('sc')
->orderBy('sc.rank', 'ASC');
},
'property' => 'candStatus',
'preferred_choices' => array('1'),
));
Run Code Online (Sandbox Code Playgroud)
我是Symfony的新手,所以任何帮助都会受到赞赏