0

ユーザー クラス (FOS_UserBundle) を変更しようとしています。会社とは別のテーブルがあり、ユーザーが作成されたら、それらの会社の 1 つに関連付けたいと考えています。最終的には、会社のテーブルにエントリを作成するときにユーザーを自動的に作成する方法を発見する必要がありますが、今のところ、テスト データをフィードしようとしています。

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

    /**
    * @var object BizTV\BackendBundle\Entity\company
    *  
    * @ORM\ManyToOne(targetEntity="BizTV\BackendBundle\Entity\company")
    * @ORM\JoinColumn(name="company", referencedColumnName="id")
    */
    protected $company; 

私の構成では、設定しようとしました

$this->company = 1;

しかし、それはオブジェクトが必要なのでうまくいかないので、会社のオブジェクトをインスタンス化し、ダミーデータで埋めました...

$dummy = new company;
$dummy->setActive(true);
$dummy->setCompanyName('myCompany');
$dummy->setId(1);

$this->company = $dummy;

次に、新しいエンティティが見つかったというエラー メッセージが表示されます...

エンティティの永続化操作をカスケードするように構成されていない関係 'BizTV\UserBundle\Entity\User#company' を通じて新しいエンティティが見つかりました: BizTV\BackendBundle\Entity\company@0000000018a5279000000000049c7b23. 新しいエンティティを明示的に永続化するか、関係に対してカスケード永続化操作を構成します。問題の原因となっているエンティティを特定できない場合は、'BizTV\BackendBundle\Entity\company#__toString()' を実装して手がかりを得ます。

4

1 に答える 1

0

cascade persist オプションを User::$company プロパティ アノテーションに追加します。

/**
 * @ORM\ManyToOne(targetEntity="BizTV\BackendBundle\Entity\company", cascade={"persist"})
 * @ORM\JoinColumn(name="company", referencedColumnName="id")
 */
protected $company;

関連ドキュメントはこちらにあります: http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/working-with-associations.html#transitive-persistence-cascade-operations

于 2012-07-22T00:23:53.510 に答える