我有一个文档集合,我想通过某个字段查询,按字段location对它们进行排序pos,并且只返回每个pos字段的最高值.
所以现在的查询看起来像这样:
$locations = array(1,2,3,4,5,6);
$results = $this->dm->createQueryBuilder('\App\Document\Test')
->select('id', 'word', 'pos','change', 'title', 'coll_at', 'location')
->field('location')->in($locations)
->sort('location', 'asc')
->sort('pos', 'asc')
->getQuery()->execute();
Run Code Online (Sandbox Code Playgroud)
但是因为location每个具有不同的特定条目可以有多个条目pos,所以我必须创建一个foreach循环来操作之后的数据.在这种情况下,我可以采用该快捷方式只是在返回数据后更改数据,但我还有其他情况,根本不能这样做.所以我创建了这个较小的场景,试图找出如何使用Doctrine ODM的group查询,甚至是映射和减少它.不确定最好的方法.我看到很多获得跑步总数等的例子.
那么我如何创建一个查询来获得pos每个特定字段中最高的数值location?知道可能存在多个具有相同location但不同pos值的文档.最重要的是,拥有我在上面列出的所选记录的所有字段->select()
当我尝试在 Controller 操作中使用 @ParamConverter 注释时,出现错误
"Cannot resolve argument $company of \"App\\Controller\\ProfileController::top()\": Cannot autowire service \".service_locator.0CrkHeS\": it references class \"App\\Document\\Company\" but no such service exists."
Run Code Online (Sandbox Code Playgroud)
我知道这样的服务不存在,因为我已经排除Document了services.yaml. 我只需要从 Repostiroy 中找到一个 Company 文档对象。
这是我的控制器代码:
<?php
// src/Controller/ProfileController.php
namespace App\Controller;
use App\Document\Company;
use App\Service\DocumentManager\CompanyManager;
use FOS\RestBundle\Controller\FOSRestController;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use Swagger\Annotations as SWG;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
/**
* @Route("/profile")
*/
class ProfileController extends FOSRestController
{
/**
* @Route("/top/{id}")
* @Method("GET")
* @SWG\Response(
* response=200,
* description="Returns top profiles", …Run Code Online (Sandbox Code Playgroud) 我有 Symfony 5 项目,只需按照说明安装 DoctrineMongoDBBundle 包,我收到以下错误,
尝试从命名空间“MongoDB\Driver\Monitoring”加载接口“CommandSubscriber”。您是否忘记了另一个命名空间的“use”语句?
/vendor/doctrine/mongodb-odm/lib/Doctrine/ODM/MongoDB/APM/CommandLoggerInterface.php(第 9 行)
我正在运行以下版本的 mongodb 和原则。
还通过 Pecl 安装了 php 驱动程序(版本 1.7.4)
有人对我所缺少的有任何想法吗?
在从 PHP 5.5 升级到 PHP 7.0 的过程中,Symfony 项目遇到了问题。
已遵循http://www.doctrine-project.org/2016/06/09/odm-1-1-0-and-1-0-6.html中的步骤,以确保 mongo-ext 符合原则。没有发生兼容性升级。
但出现以下异常:
PHP Fatal error: Cannot use 'String' as class name as it is reserved in
... vendor/doctrine/mongodb-odm/lib/Doctrine/ODM/MongoDB/Mapping/Annotations/String.php on line 26
Run Code Online (Sandbox Code Playgroud)
该问题很可能与composer.json 中的配置问题有关
哪个要求阻止作曲家更新安装正确的原则/mongodb?
PHP 版本 7.0.13-0ubuntu0.16.04.1 (cli) (NTS)
{
"name": "foo/bar",
"license": "proprietary",
"type": "project",
"autoload": {
"psr-4": {
"": "src/"
},
"classmap": [
"app/AppKernel.php",
"app/AppCache.php"
]
},
"autoload-dev": {
"psr-4": {
"Tests\\": "tests/"
}
},
"require": {
"php": "^7.0",
"symfony/symfony": "3.2.*",
"doctrine/orm": "^2.5",
"doctrine/doctrine-bundle": "^1.6",
"doctrine/doctrine-cache-bundle": …Run Code Online (Sandbox Code Playgroud)