デフォルトのユーザー エンティティ属性を拡張したいと考えています。FOSUserBundle を SonataUserBunle で拡張した後のデータベースには、ユーザーを格納するための 2 つのテーブルがあります:fos_user
とfos_user_user
. 拡張したいfos_user
app/AppKernel.php は次のとおりです。
new Sonata\UserBundle\SonataUserBundle('FOSUserBundle'),
new Application\Sonata\UserBundle\ApplicationSonataUserBundle(),
app/config.yml ファイルで設定しました:
fos_user:
db_driver: orm<br>
firewall_name: main<br>
user_class: Acme\DemoBundle\Entity\User<br>
group:<br>
group_class: Application\Sonata\UserBundle\Entity\Group<br>
sonata_user:
security_acl: true
class:
user: Acme\DemoBundle\Entity\User
admin:
user:
class: Acme\DemoBundle\Admin\UserAdmin
parameters:
sonata.user.admin.user.class: Blogger\BlogBundle\Admin\UserAdmin
sonata.user.admin.user.entity: Blogger\BlogBundle\Entity\User
doctrine:
orm:
auto_mapping: auto
SonataUserBundle はで作成されsrc/Application/Sonata/UserBundle
ます SonataUserBundle をオーバーライドするには、別の UserAdmin クラスを作成して UserAdmin を拡張しsrc/Acme/DemoBundle/Admin/UserAdmin
、すべて正常に動作
するようになりました。今度は User エンティティ (fos_user
テーブル) を拡張して新しい属性を追加します。
ここに、デフォルトの User エンティティを拡張したい Acme/Demo/Entity/User.php があります
namespace Acme\DemoBundle\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;
/*
* @ORM\Column(type="string", name="newAttribute")
*/
protected $newAttribute;
public function __construct()
{
parent::__construct();
// your own logic
}
/**
* Get id
*
* @return integer
*/
public function getId()
{
return $this->id;
}
}
この問題に関する多くの投稿を読みましたが、どの解決策もfos_user
役に立ちphp app/console doctrine:generate:entities Acme/DemoBundle
ませんでした。Entityクラスの代わりにModelクラスを拡張しようとしましたが、何も変わりませんでした