2016-10-24 7 views
2

Я искал в stackoverflow для своей проблемы, но я не нашел ответа на свою проблему.Symfony production Mapping Exception FOSUserBundle

В настоящее время я развертываю свой проект symfony на своем сервере Debian под управлением PHP 5.6.26 following the documentation on the symfony website.

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

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

[Doctrine\ORM\Mapping\MappingException] Class "AppBundle\Entity\User" sub class of "FOS\UserBundle\Model\User" is not a valid entity or mapped super class.

я не имею эту ошибку на моей машине развития (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"] 

ответ

1

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

моего исправление: прописная папка Ресурсов в src/AppBundle/

2

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

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

Можете ли вы попробовать и посмотреть, работает ли это? Я не уверен, хотя, но попробуйте.

+0

Я изменил имя таблицы fos_user. но это не сработало – Debreker

+0

Я предполагаю, что вы отредактировали 'app/AppKernel.php', чтобы включить FOSUserBundle [как описано здесь] (http://symfony.com/doc/current/bundles/FOSUserBundle/index.html#step -2-включить-на-расслоение). В противном случае я не могу думать, что еще. Это должно быть довольно прямолинейно. –

+0

Я увидел, что папка ** Resources ** была заглавная в вашем ответе. Ресурсов моей папки (в src/AppBundle) не было, после изменения этого проекта мой проект запущен и работает! Благодаря! – Debreker