SonataUserBundle + FOSUserBundle Проблема с аннотацией Ошибка первичного ключа доктрины

Использование Symfony 4.1, Sonata User Bundle 4.x и FOSUserBundle 2.1.2.

Я пытаюсь переопределить имена таблиц для таблиц пользователей и групп. Поэтому я добавил аннотации к автоматически созданным классам пользователей и групп:

use Sonata\UserBundle\Entity\BaseGroup as BaseGroup;
use Doctrine\ORM\Mapping as ORM;

/**
 * This file has been generated by the SonataEasyExtendsBundle.
 * @ORM\Entity()
 * @ORM\Table(name = "aegis_group")
 * @link https://sonata-project.org/easy-extends 
 * References:
 * @link http://www.doctrine-project.org/projects/orm/2.0/docs/reference/working-with-objects/en
 */
class Group extends BaseGroup
{
    /**     
     * @ORM\Id      
     * @var int $id
     */
    protected $id;

   /**
     * Get id.
     *
     * @return int $id
     */
    public function getId()
    {
        return $this->id;
    }    
}

Затем я изменил doctrine.yaml, чтобы учесть эти аннотации:

        mappings:                    
                App:
                    is_bundle: false
                    type: annotation
                    dir: '%kernel.project_dir%/src/Entity'
                    prefix: 'App\Entity'
                    alias: App
                FOSUserBundle: ~                                          
                ApplicationSonataUserBundle: 
                    type: annotation
                SonataUserBundle: ~   

Однако, когда я запускаю миграции, doctrine выдает ошибку:

In MappingException.php line 46:

No identifier/primary key specified for Entity "App\Application\Sonata\User Bundle\Entity\Group" sub class of "Sonata\UserBundle\Entity\BaseGroup". Every Entity must have an identifier/primary key.

Как исправить эту проблему, чтобы я мог использовать свои собственные имена таблиц? Все, что я хочу сделать, это изменить имена таблиц базы данных, это не должно быть связано.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
208
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Сначала вы забыли пространство имен в своем классе.

Во-вторых: попробуйте добавить стратегию и столбец для вашего первичного ключа, например

/**
 * @var int $id
 * @ORM\Id
 * @ORM\Column(type = "integer")
 * @ORM\GeneratedValue(strategy = "AUTO")
 */
Ответ принят как подходящий

Что ж, оказывается, файл orm XML создается SonataEasyExtendsBundle в папке Application \ Sonata \ UserBundle \ Resources \ config \ doctrine. Необходимо изменить этот файл (User.orm.xml), чтобы внести изменения в конфигурацию таблицы.

<?xml version = "1.0" encoding = "UTF-8"?>
<doctrine-mapping xmlns = "http://doctrine-project.org/schemas/orm/doctrine-mapping"
                  xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance"
                  xsi:schemaLocation = "http://doctrine-project.org/schemas/orm/doctrine-mapping
                  http://doctrine-project.org/schemas/orm/doctrine-mapping.xsd">

    <entity name = "App\Application\Sonata\UserBundle\Entity\User" table = "aegis_user">

        <id name = "id" column = "id" type = "integer">
            <generator strategy = "AUTO" />
        </id>

    </entity>

</doctrine-mapping>

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