Пользователь Symfony2 FOS не является допустимым объектом

Я не уверен, что я сделал неправильно здесь.

Я следую инструкциям по установке пакета fos и столкнулся с проблемой.

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

Неустранимая ошибка PHP: необработанное исключение «Doctrine\ORM\Mapping\MappingException» с сообщением «Класс RS\Entity\User не является допустимым объектом или сопоставленным суперклассом». в PATH\vendor\doctrine\lib\Doctrine\ORM\Mapping\MappingException.php:142

Мой пользовательский класс находится в /src/RS/Entity/User.php

И у меня есть'RS' => __DIR__.'/../vendor/reportsuite/src'в app/autoload.php

Класс

<?php
// /src/RS/Entity/User.php

namespace RS\Entity;

use FOS\UserBundle\Entity\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\Table(name="fos_user")
 */
class User extends BaseUser
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    public function __construct()
    {
        parent::__construct();
        // your own logic
    }
}

Насколько я могу судить, это сопоставленный объект, если я что-то не упустил?

Я также пытался создать объект по пакетам и другим пакетам, например Acme/UserBundle/Entity/User.php.

# Doctrine Configuration
doctrine:
    dbal:
        default_connection:       default
        connections:
            default:
                dbname:           axpdb
                user:             %database_user%
                password:         %database_password%
                host:             %database_host%
                port:             %database_port%
                charset:          UTF8
            reportsuite:
                dbname:           reportsuite
                user:             %database_user%
                password:         %database_password%
                host:             %database_host%
                port:             %database_port%
                charset:          UTF8
    orm:
        entity_managers:
            default:
                connection:       default
                mappings:
                    ReportSuiteMainMenuBundle: ~
            reportsuite:
                connection:       reportsuite
                mappings:


# Security
jms_security_extra:
    secure_controllers:  true
    secure_all_services: false

# FOS User Config
#fos_user:
#    db_driver: orm
#    firewall_name: main
#    user_class: RS\Entity\User
#    model_manager_name: reportsuite

У меня есть 2 базы данных, к которым мне нужно получить доступ, и я закомментировал fos, чтобы продолжить работу.


person Lee    schedule 02.01.2012    source источник
comment
Не могли бы вы вставить запись doctrine: из config.yml? Я подозреваю, что вы неправильно настроили сопоставление. (см. связанные сущности доктрины 2 в symfony 2 и связь"> stackoverflow.com/questions/8636144/)   -  person Kris Wallsmith    schedule 02.01.2012
comment
Есть ли причина, по которой вы не используете структуру пакета по умолчанию?   -  person Alessandro Desantis    schedule 03.01.2012
comment
Проект является динамическим, и клиенты могут перетаскивать пользовательские модули в систему и из нее. Поэтому я поместил код в RS/, который является глобальным для всех модулей. Разве это неправильный подход? Я привык работать с Zend Framework.   -  person Lee    schedule 03.01.2012


Ответы (3)


Вы проверили пространство имен?

Я думаю, что это должно быть:

namespace Namespace\YourBundle\Entity

Вы можете использовать энтити из всех Ваших пакетов.

person Pawel    schedule 03.01.2012

Бегать

touch Entity/*

и вы в порядке.

person Peyman    schedule 13.04.2012

Была эта проблема - не забудьте аннотацию * @ORM\Entity, как показано ниже:

/**
 * Powma\ServiceBundle\Entity\User
 *
 * @ORM\Entity
 * @ORM\Table(name="users")
 */
person Mike    schedule 14.03.2012