簡體   English   中英

Sonata/Symfony 使用 MongoDB 過濾 Null

[英]Sonata/Symfony using MongoDB filtering for Null

我正在嘗試在 Sonata admin 中自定義一個過濾器,該過濾器返回在一個特定字段上具有 null 的所有對象......在 MySQL 中,有一個函數用於獲取 null 值,即為 null。 我正在嘗試做同樣的事情,但是這次使用 mongo 會給出一個錯誤,即未定義 isnull 函數。 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);

我在以下鏈接上看到了這個解決方案: 在此處輸入鏈接描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM