Исключение для сопоставления продукции Symfony FOSUserBundle


Я искал в stackoverflow свою проблему, но не нашел ответа на свою проблему.

В настоящее время я развертываю свой проект symfony на своем сервере Debian под управлением PHP 5.6.26 в соответствии с документацией на веб-сайте symfony.

Когда я выполнил команду для установки моих пакетов, выполнив команду composer install --no-dev --optimize-autoloader

Я получаю следующую ошибку:

[Доктрина\ORM\Сопоставление\Исключение сопоставления] Подкласс класса "AppBundle\Сущность\Пользователь" класс "FOS\UserBundle\Модель\Пользователь" не является допустимой сущностью или сопоставленным суперклассом.

У меня нет этой ошибки на моих компьютерах разработки (рабочий стол Windows 10 и Macbook)

В настоящее время я понятия не имею, что может быть не так. Я переключился с аннотации на yml позже в проекте.

Мой User.php файл:

<?php

namespace AppBundle\Entity;

use FOS\UserBundle\Model\User as BaseUser;

/**
 * User
 */
class User extends BaseUser
{

    public function __construct()
    {
        parent::__construct();
    }

    protected $id;

    /**
     * @var \AppBundle\Entity\Address
     */
    private $address;


    /**
     * Set address
     *
     * @param \AppBundle\Entity\Address $address
     *
     * @return User
     */
    public function setAddress(\AppBundle\Entity\Address $address = null)
    {
        $this->address = $address;

        return $this;
    }

    /**
     * Get address
     *
     * @return \AppBundle\Entity\Address
     */
    public function getAddress()
    {
        return $this->address;
    }
}

И мой файл User.orm.yml:

AppBundle\Entity\User:
    type: entity
    table: user
    repositoryClass: AppBundle\Repository\UserRepository
    id:
        id:
            type: integer
            id: true
            generator:
                strategy: AUTO
    lifecycleCallbacks: {  }

    oneToOne:
      address:
        targetEntity: AppBundle\Entity\Address
        cascade: ["persist", "remove"]
Author: Debreker, 2016-10-24

2 answers

Я не уверен на 100%, но я вижу здесь примечание , что user является зарезервированным ключевым словом SQL, и вам может потребоваться изменить ваш файл src/AppBundle/Resources/config/doctrine/User.orm.yml следующим образом:

AppBundle\Entity\User:
    type: entity
    table: fos_user

Не могли бы вы попробовать и посмотреть, сработает ли это? Хотя я не уверен - но попробуйте.

 2
Author: Alvin Bunk, 2016-10-24 21:55:41

Увидев ответ Элвина Бунка, я увидел, что в его ответе ресурсы папки (в src/AppBundle) были заглавными буквами. После проверки ресурсы моей папки не были заглавными буквами.

Мое исправление: Заглавные буквы в папке Ресурсы в src/AppBundle/

 1
Author: Debreker, 2016-10-24 22:16:58