3

Symfony2プロジェクトにはFosUserBundleとSonataUserBundleを使用しています。

私は今混乱しています。エンティティUserのフィールドを追加したいのですが、機能していません。たとえば、スキーマの更新はありません。

これが私の設定です:

AppKernel:
...
new FOS\UserBundle\FOSUserBundle(),
new Sonata\UserBundle\SonataUserBundle(),
new Application\Sonata\UserBundle\ApplicationSonataUserBundle('FOSUserBundle')


config.yml:
...
# FOSUserBundle Configuration
fos_user:
    db_driver:     orm                        # BDD type
    firewall_name: main                       # firewall name
    user_class:    Application\Sonata\UserBundle\Entity\User # entity class defined

そして、app / Application / Sonata / userBundle /Entity/にフィールドが追加されたUserエンティティ

namespace Application\Sonata\UserBundle\Entity;

use Sonata\UserBundle\Entity\BaseUser as BaseUser;

/**
 * This file has been generated by the Sonata EasyExtends bundle ( http://sonata-    project.org/easy-extends )
 *
 * References :
 *   working with object : http://www.doctrine-project.org/projects/orm/2.0        /docs/reference/working-with-objects/en
 *
 * @author <yourname> <youremail>
 */
class User extends BaseUser
{

    /**
     * @var integer $id
     */
    protected $id;

    /**
     * @var string
     */
    protected $institution;

    /**
     * @var string
     */
    protected $department;

    /**
     * @var string
     */
    protected $city;

    /**
     * @var string
     */
    protected $country;

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

    /**
     * @return string
     */
    public function getInstitution()
    {
        return $this->institution;
    }

    /**
     * @return string
     */
    public function getDepartment()
    {
        return $this->department;
    }

    /**
     * @return string
     */
    public function getCity()
    {
        return $this->city;
    }

    /**
     * @return string
     */
    public function getCountry()
    {
        return $this->country;
    }
}

私のデータベースでは、テーブルfos_user_userはユーザーが保存したデータを含むテーブルのようです。

「phpapp/console doctrine:schema:update --force」を呼び出すと、追加されたフィールド(country、city ...)は作成されません。ユーザーエンティティにフィールドを追加するにはどうすればよいですか?私はfosuserbundleとsonatauserbundleで迷子になっています...

4

2 に答える 2

6

実際、fosとsonataのユーザーバンドルを使用する方法では、XML定義を使用する必要があるようです。したがって、たとえば「city」というフィールドを追加するには、次の行を追加する必要があります。

User.php(/ app / Application / Sonata / UserBundle / Entity /内):

protected $city;

User.orm.xml(/ app / Application / Sonata / UserBundle / Ressource / config / doctrine /内):

<field name="city" column="city" type="text"/>

たぶん、これをバンドルのドキュメントに入れることは、初心者にとって興味深いでしょう;)

于 2012-10-01T15:20:34.757 に答える
3

注釈を使用したい場合は、より良い解決策を見つけました。

フォルダを削除すると、フォルダ内UserBundle/Resorces/config/doctrineの注釈を使用できますUserBundle/Entity

于 2015-02-28T08:53:03.053 に答える