1

デフォルトのユーザー エンティティ属性を拡張したいと考えています。FOSUserBundle を SonataUserBunle で拡張した後のデータベースには、ユーザーを格納するための 2 つのテーブルがあります:fos_userfos_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クラスを拡張しようとしましたが、何も変わりませんでした

4

1 に答える 1