我正在尝试在Sonata admin中自定义过滤器,该过滤器返回在一个特定字段上具有null的所有对象...在MySQL中,我曾经使用一个函数来获取为null的null值。我正在尝试做同样的事情,但是这次使用mongo会产生一个错误,即未定义isull函数。有什么功能类似于odm中使用的形式吗?我的代码如下:
->add("isRoot", 'doctrine_mongo_callback', array(
'callback' => function ($queryBuilder, $alias, $field, $value) {
/**
* @var QueryBuilder $queryBuilder
*/
if ($value['value']) {
if ($value['value'] == 0) {
$queryBuilder->andWhere($queryBuilder->expr()->isNull($alias.'.mainCategory'));
return true;
} else {
$category = $this->getConfigurationPool()->getContainer()->get('doctrine_mongodb.odm.document_manager')->getReference(ArticleCategory::class, $value['value']);
$queryBuilder->andWhere($queryBuilder->expr()->eq($alias.'.category', $category));
return true;
}
}
},
'field_type' => ChoiceType::class,
'field_options' => array(
'choices' => $this->getCategoryChoices()
),
'label' => 'mainCategory'
));
}
ODM中是否有类似于ORM中的isNull的函数?以下是错误:尝试调用类“ Doctrine \ ODM \ MongoDB \ Query \ Expr”的未定义方法“ isNull”。
所以我想出了如何查询而不是
$queryBuilder->andWhere($queryBuilder->expr()->isNull($alias.'.mainCategory'));
使用以下命令:$ queryBuilder-> field('mainCategory')-> equals(null);
我在以下链接上看到了此解决方案:在此处输入链接说明
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句