2015-07-16 3 views
1

Я использую FOSUserBundle 1.3.x-dev изнутри SonataUserBundle. Для установки и настройки всех я следую каждому шагу на UserBundle installation. Это то, что у меня есть на предприятиях:SQLSTATE [42S02]: Базовая таблица или просмотр не найдены: 1146 «pdone.BaseUser» не существует

#src/Application/Sonata/UserBundle/Entity/User.php 

namespace Application\Sonata\UserBundle\Entity; 

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

class User extends BaseUser 
{ 
    /** 
    * @var int 
    */ 
    protected $id; 

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

#src/Application/Sonata/UserBundle/Entity/Group.php 

namespace Application\Sonata\UserBundle\Entity; 

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

class Group extends BaseGroup 
{ 
    /** 
    * @var int 
    */ 
    protected $id; 

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

Это как конфигурация выглядит следующим образом:

#FOSUserBundle 
fos_user: 
    db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel' 
    firewall_name: main 
    user_class:  Application\Sonata\UserBundle\Entity\User 

    group: 
     group_class: Application\Sonata\UserBundle\Entity\Group 
     group_manager: sonata.user.orm.group_manager 

    service: 
     user_manager: sonata.user.orm.user_manager 

    from_email: 
     address:  [email protected] 
     sender_name: Mail Service 

doctrine: 
    dbal: 
     types: 
      json: Sonata\Doctrine\Types\JsonType 
     default_connection: default 
     connections: 
      default: 
       driver: pdo_mysql 
       host:  "%database_host%" 
       port:  "%database_port%" 
       dbname: "%database_name%" 
       user:  "%database_user%" 
       password: "%database_password%" 
       charset: UTF8 

       logging: true 
       profiling: true 
    orm: 
     auto_generate_proxy_classes: "%kernel.debug%" 
     entity_managers: 
      default: 
      #I have tried here using mappings and without it - same issue 
      mappings: 
       FOSUserBundle: ~ 
       ApplicationSonataUserBundle: ~ 
       SonataUserBundle: ~ 
      auto_mapping: true 
      filters: 
       softdeleteable: 
        class: Gedmo\SoftDeleteable\Filter\SoftDeleteableFilter 
        enabled: false 

Это кусок AppKernel.php:

... 
new Sonata\CoreBundle\SonataCoreBundle(), 
new Sonata\BlockBundle\SonataBlockBundle(), 
new Sonata\UserBundle\SonataUserBundle('FOSUserBundle'), 
new Sonata\EasyExtendsBundle\SonataEasyExtendsBundle(), 
new Sonata\DoctrineORMAdminBundle\SonataDoctrineORMAdminBundle(), 
new Sonata\AdminBundle\SonataAdminBundle(), 
new Application\Sonata\UserBundle\ApplicationSonataUserBundle(), 
... 

Это то, что я имею в composer.json файл:

"require": { 
    ... 
    "friendsofsymfony/user-bundle": "1.3.x-dev", 
    "sonata-project/admin-bundle": "~2.3", 
    "sonata-project/user-bundle": "^2.2", 
    "sonata-project/doctrine-orm-admin-bundle": "~2.3", 
    "sonata-project/easy-extends-bundle": "^2.1", 
    ... 
    "leaseweb/memcache-bundle": "*" 
} 

распечатать ошибку в app/Resources/FOSUserBundle/views/Security/login.html.twig следующим образом:

{{ error|trans({}, 'FOSUserBundle') }} 

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

произошло исключение во время выполнения «SELECT t0.username AS имя_пользователя1, t0.username_canonical AS username_canonical2, t0.email AS email3, t0.email_canonical AS email_canonical4, t0.enabled AS enabled5, t0.salt AS salt6, t0.password AS password7, t0.last_login AS last_login8, t0.locked AS locked9, t0 .expired AS expired10, t0.expires_at AS expires_at11, t0.confirmation_token AS confirm_token12, t0.password_requested_ в AS password_requested_at13, t0.roles AS role14, t0.credentials_expired AS credentials_expired15, t0.credentials_expire_at AS credentials_expire_at16, t0.created_at AS created_at17, t0.updated_at AS updated_at18, t0.date_of_birth AS date_of_birth19, t0.firstname AS firstname20, t0. фамилия AS lastname21, t0.website AS website22, t0.biography AS биография23, t0.gender AS gender24, t0.locale AS locale25, t0.timezone AS часовой пояс26, t0.phone AS phone27, t0.facebook_uid AS facebook_uid28, t0.facebook_name КАК facebook_name29, t0.facebook_data AS facebook_data30, t0.twitter_uid А.С. twitter_uid31, t0.twitter_name А.С. twitter_name32, t0.twitter_data А.С. twitter_data33, t0.gplus_uid А.С. gplus_uid34, t0.gplus_name AS gplus_name35, t0.gplus_data А.С. gplus_data36, t0.token AS token37, t0.two_step_code AS two_step_code38 FROM BaseUser t0 WHERE t0.username_canonical =? LIMIT 1' с Params [ "администратора"]: SQLSTATE [42S02]: Базовая таблица или представление не найдено: 1146 Таблица 'pdone.BaseUser' не существует

Почему это? Является ли это проблемой FOSUserBundle или проблемой SonataUserBundle? Может ли кто-нибудь дать мне совет по этому поводу?

EDIT

Я не выполнили еще один тест, выполнив следующие команды:

# php app/console doctrine:schema:update --dump-sql 
Nothing to update - your database is already in sync with the current entity metadata. 

# php app/console doctrine:schema:drop --force 
Dropping database schema... 
Database schema dropped successfully! 

# php app/console doctrine:schema:create 
ATTENTION: This operation should not be executed in a production environment. 

Creating database schema... 
Database schema created successfully! 

И снова никакого успеха, и тот же вопрос! На всех испытаний я очистить первую кэш

EDIT 2

Я бежал doctrine:mapping:info и я получил этот вывод, почему?

Found 18 mapped entities: 
[OK] FOS\UserBundle\Entity\User 
[OK] FOS\UserBundle\Entity\Group 
[OK] Sonata\UserBundle\Entity\BaseGroup 
[OK] Sonata\UserBundle\Entity\BaseUser 
[OK] Application\Sonata\UserBundle\Entity\User 
[OK] Application\Sonata\UserBundle\Entity\Group 
[OK] PDI\PDOneBundle\Entity\Representative 
[OK] PDI\PDOneBundle\Entity\Media 
[OK] PDI\PDOneBundle\Entity\Brand 
[OK] PDI\PDOneBundle\Entity\TerritoryBrand 
[OK] PDI\PDOneBundle\Entity\Email 
[OK] PDI\PDOneBundle\Entity\Company 
[OK] PDI\PDOneBundle\Entity\Action 
[OK] PDI\PDOneBundle\Entity\Message 
[OK] PDI\PDOneBundle\Entity\Territory 
[OK] PDI\PDOneBundle\Entity\TargetBrand 
[OK] PDI\PDOneBundle\Entity\Event 
[OK] PDI\PDOneBundle\Entity\Target 

ответ

0

ошибка очень явно, таблица BaseUser не существует.

Базовая таблица или представление не найдено: 1146 Таблица 'pdone.BaseUser' не существует

Кроме того, пожалуйста, проверьте FOSUserBundle User entity класс. Некоторые аннотации (@ORM\Entity и @ORM\Table(name="...")) отсутствуют.

Например

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

    /** 
    * @ORM\Entity 
    * @ORM\Table(name="fos_user") 
    */ 
    class User extends BaseUser 
    { 

Убедитесь, для создания таблиц базы данных с помощью команды

app/console doctrine:schema:update --force 

EDIT:

Как уже упоминалось в Sonata reference, ты пытался добавьте этот код в свой config.yml?

# Enable Doctrine to map the provided entities 
doctrine: 
    orm: 
     entity_managers: 
      default: 
       mappings: 
        FOSUserBundle: ~ 
        ApplicationSonataUserBundle: ~ 
        SonataUserBundle: ~ 
+0

Это не исправить мою проблему, я сделал то, что вы сказали мне, и вопрос до сих пор – ReynierPM

+0

@ReynierPM я исправлена ​​ошибка в моя команда 'app/console doctrine: schema: update -force'. Не забудьте добавить '--force'. У вас такая же проблема? – zilongqiu

+0

Да, нет другого способа запустить команду, отличную от добавления '--force', и да, я добавил и ничего такого же вопроса – ReynierPM

0

Если в команде php app/console doctrine:schema:update --dump-sql ничего не отображается, ваш объект не отображается.

Мое первое предположение, что вам нужно добавить auto_mapping в config.yml вместо документации конфигурации Sonata, таким образом ваш объект будет отображаться автоматически.

doctrine: 
    orm: 
     auto_generate_proxy_classes: "%kernel.debug%" 
     entity_managers: 
      default: 
       naming_strategy: doctrine.orm.naming_strategy.underscore 
       auto_mapping: true 

Также проверьте в вашем вашем app/AppKernel.php, что у вас есть SonataUserBundle расширение FOSUserBundle:

new Sonata\UserBundle\SonataUserBundle('FOSUserBundle') 
+0

Запустив консольную команду, я получил этот «Ничего не обновлял», ваша база данных уже синхронизирована с текущими метаданными объекта. »И да, auto_mapping: true' в 'config.yml', но тот же вопрос – ReynierPM

Смежные вопросы

 Смежные вопросы