2016-11-23 5 views
0

私は仕事にsymfonyの2.8、FOSUserBundle 1.3とFOSOAuthServerBundleこれらのバンドルに必要なクラスのすべてのためにDoctrineはFOSUserBundleとFOSOAuthServerBundle

1.5を使用していますからフィールドをマップしません、私はきちんと自分のスキーマを更新していない教義になってしまいました。つまり、ベースクラスのフィールドは考慮されません。ここで

CREATE TABLE oauh2_access_tokens (id INT NOT NULL, client_id INT NOT NULL, user_ 
id INT DEFAULT NULL, PRIMARY KEY(id)); 
    CREATE TABLE oauth2_auth_codes (id INT NOT NULL, client_id INT NOT NULL, user_id 
INT DEFAULT NULL, PRIMARY KEY(id)); 
CREATE TABLE oauth2_clients (id INT NOT NULL, PRIMARY KEY(id)); 
CREATE TABLE oauth2_refresh_tokens (id INT NOT NULL, client_id INT NOT NULL, use 
r_id INT DEFAULT NULL, PRIMARY KEY(id)); 

は私の設定です:

<?php 

namespace COMPANY\AuthBundle\Entity; 

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

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

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

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

だから私のクラスのユーザー

doctrine: 
    orm: 
     #auto_generate_proxy_classes: "%kernel.debug%" 
     default_entity_manager: default 
     entity_managers: 
      default: 
       connection: default 
       naming_strategy: doctrine.orm.naming_strategy.underscore 
       mappings: 
        COMPANYAuthBundle: ~ 

fos_user: 
    db_driver: orm 
    firewall_name: api 
    user_class: COMPANY\AuthBundle\Entity\User 

#FOSOAuthBundle Configuration 
fos_oauth_server: 
    db_driver: orm 
    client_class: COMPANY\AuthBundle\Entity\Client 
    access_token_class: COMPANY\AuthBundle\Entity\AccessToken 
    refresh_token_class: COMPANY\AuthBundle\Entity\RefreshToken 
    auth_code_class: COMPANY\AuthBundle\Entity\AuthCode 
    service: 
     user_provider: fos_user.user_manager 

そして、ここです、はい私は右の使用を入れてBaseUserないようFOS \ UserBundle \モデル\ユーザーでした;

OAuthServerBundleのクラスの

同じこと:基本クラスのフィールドではない、なぜ誰もがアイデアを持っています

<?php 

namespace COMPANY\AuthBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use FOS\OAuthServerBundle\Entity\Client as BaseClient; 

/** 
* Client 
* 
* @ORM\Table(name="oauth2_clients") 
* @ORM\Entity(repositoryClass="COMPANY\AuthBundle\Repository\ClientRepository") 
*/ 
class Client extends BaseClient 
{ 
    /** 
    * @var int 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    protected $id; 


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

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

(、それらはすべて同じパターンに従っている私はここに1を入れています)私のデータベースに入れた?感謝:)

答えて

1

さて、私は検索の10時間後の溶液...

を発見し、解決策は、あなたのマッピングにFOSUserBundleとFOSOAuthServerBundleと、すべてのベース・クラス・バンドルを追加することを忘れないことです.... 。

だから、これは設定する必要があります:

doctrine: 
orm: 
    #auto_generate_proxy_classes: "%kernel.debug%" 
    default_entity_manager: default 
    entity_managers: 
     default: 
      connection: default 
      naming_strategy: doctrine.orm.naming_strategy.underscore 
      mappings: 
       COMPANYAuthBundle: ~ 
       FOSUserBundle: ~ 
       FOSOAuthBundle: ~ 

また、あなたはそれぞれのルートを使用したい場合はバンドルからバンドルheritを作るので、それぞれに2つの1バンドルを作成することはできません。次に、Buncleクラスのそれぞれに次の関数を追加します。

public function getParent() 
{ 
    return "FOSOAuthServerBundle"; //Or return "FOSUserBundle"; but you can't put both 
} 
関連する問題