YEAR () и beberlei / DoctrineExtensions

Мне нужно делать запросы с ГОДОМ, и я установил beberlei / DoctrineExtensions с помощью команды doctrine. Я добавил запрошенные аннотации

doctrine:
   orm:
        auto_generate_proxy_classes: '%kernel.debug%'
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true
        dql:
            datetime_functions:
                year: DoctrineExtensions\Query\Mysql\Year

, но не получается, у меня такая ошибка:

Attempted to load class "Year" from namespace "DoctrineExtensions\Query\Mysql". Did you forget a "use" statement for another namespace?

Запрос:

public function groupTypeInterArray(){
    $qb = $this->createQueryBuilder('i')
            ->select('YEAR(i.interventionDate)');
    return $qb->getQuery()->execute();
}

Доктрина конфигурации

# Doctrine Configuration
doctrine:
    dbal:
        driver: pdo_mysql
        host: '%database_host%'
        port: '%database_port%'
        dbname: '%database_name%'
        user: '%database_user%'
        password: '%database_password%'
        charset: UTF8
        # if using pdo_sqlite as your database driver:
        #   1. add the path in parameters.yml
        #     e.g. database_path: '%kernel.project_dir%/var/data/data.sqlite'
        #   2. Uncomment database_path in parameters.yml.dist
        #   3. Uncomment next line:
        #path: '%database_path%'

    orm:
        auto_generate_proxy_classes: '%kernel.debug%'
        naming_strategy: doctrine.orm.naming_strategy.underscore
        auto_mapping: true
        dql:
            datetime_functions:
                Year: DoctrineExtensions\Query\Mysql\Year

Я искал весь день, но не нашел решения.

Заранее спасибо.

введите описание изображения здесь

Вы установили beberlei/DoctrineExtensions с помощью команды composer require beberlei/DoctrineExtensions

Maulik Savaliya 11.10.2018 06:42

Да, я сделал это, но не работает

delph49 11.10.2018 08:04

Не могли бы вы проверить изменение "datetime_functions" на "string_functions"

Maulik Savaliya 11.10.2018 08:27

У меня такая же ошибка с "string_functions".

delph49 11.10.2018 09:04

Не могли бы вы добавить свой запрос?

Maulik Savaliya 11.10.2018 10:42

Конечно, я просто отредактировал свое сообщение, чтобы его поставить.

delph49 11.10.2018 10:56

Запрос кажется нормальным, какую версию Symfony вы используете?

Maulik Savaliya 11.10.2018 11:00

Я использую Symfony 3.4.

delph49 11.10.2018 11:01

Не могли бы вы поделиться своей конфигурацией доктрины из config.yml?

Maulik Savaliya 11.10.2018 11:05

Да все хорошо, отредактировал свое сообщение, чтобы поставить.

delph49 11.10.2018 11:13

Странно, потому что я заменил вашу конфигурацию в моем локальном проекте, и все еще работает нормально, если вы используете Linux, можете ли вы запустить команду в терминале: la -la vendor/beberlei/DoctrineExtensions/src/Query/Mysql/Year.php в каталоге вашего проекта и вставить вывод сюда?

Maulik Savaliya 11.10.2018 11:20

Я не использую Linux, извините.

delph49 11.10.2018 11:32

Хорошо, тогда не могли бы вы проверить, доступен ли вышеуказанный файл у вашего поставщика или нет?

Maulik Savaliya 11.10.2018 11:33

А также проверьте разрешение этого файла, если таковое имеется.

Maulik Savaliya 11.10.2018 11:37

vendor / beberlei / DoctrineExtensions / src / Query / Mysql / Year.php все в порядке. А разрешение? где мне искать?

delph49 11.10.2018 11:45

Какую ОС вы используете? Windows?

Maulik Savaliya 11.10.2018 11:46

Да, это Windows 10.

delph49 11.10.2018 11:50

хорошо, затем откройте свой cmd и выполните следующие действия: 1. перейдите в свой каталог 2. выполните команду: «dir vendor / beberlei / DoctrineExtensions / src / Query / Mysql / Year.php» (проверьте верхний и нижний регистр как окно нечувствительно к регистру) 3. Откройте файл в своей папке и проверьте разрешение, щелкнув по нему правой кнопкой мыши.

Maulik Savaliya 11.10.2018 11:51

Я редактирую свое первое сообщение с разрешением и результатом для команды: Répertoire: D: \ Users \ delph \ Desktop \ NetBeansProjects \ ProjetMairie6 \ vendor‌ \ beberlei \ DoctrineEx‌ tensions \ src \ Query \ M‌ ysql Mode LastWriteTime Длина Имя ---- ------------- ------ ---- -a ---- 10.10.2018 15:55 678 Year.php

delph49 11.10.2018 11:59

Не могли бы вы проверить, является ли файл исполняемым или нет? Погуглите, как проверить, является ли файл исполняемым или нет в Windows. Файл должен иметь разрешение 644.

Maulik Savaliya 11.10.2018 12:03

Я в винде так что все нормально

delph49 11.10.2018 13:29

Проблема решена. но я больше ничего не делал.

delph49 11.10.2018 14:36

Странно, но я рад, что проблема решена

Maulik Savaliya 12.10.2018 05:23
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
23
1 887
3

Ответы 3

1.dql: datetime_functions: year: DoctrineExtensions\Query\Mysql\Year ???

2.dql: datetime_functions: Year: DoctrineExtensions\Query\Mysql\Year ???

Может быть dql: datetime_functions: YEAR: DoctrineExtensions\Query\Mysql\Year MONTH: DoctrineExtensions\Query\Mysql\Month DAY: DoctrineExtensions\Query\Mysql\Day

Для меня удаление каталога поставщика и установка нового композитора решила проблему.

в запросе замените "Год" на "год"

поэтому используйте вместо этого следующий код:

public function groupTypeInterArray(){
    $qb = $this->createQueryBuilder('i')
            ->select('year(i.interventionDate)');
    return $qb->getQuery()->execute();
}

и вам также необходимо изменить соответствующую строку в конфиге доктрины:

заменяет этот код

Year: DoctrineExtensions\Query\Mysql\Year

По этому коду

year: DoctrineExtensions\Query\Mysql\Year

PS: чтобы узнать, какую ссылку вы должны использовать для правильного добавления функции в конфигурацию доктрины, вам нужно перейти на эта ссылка

Другие вопросы по теме