1

ユーザーエンティティに次の列のないプロパティがあります

/**
 *
 * @ORM\ManyToOne(targetEntity="\Auth\Entity\Company", inversedBy="user")
 * @ORM\JoinColumn(name="companyID", referencedColumnName="id")
 */
protected $company;


/**
 *
 * @ORM\ManyToOne(targetEntity="\Auth\Entity\Role", inversedBy="user")
 * @ORM\JoinColumn(name="roleID", referencedColumnName="id")
 */
protected $role;

ユーザーテーブルに列の役割や会社がありません。しかし、私は以下のようにユーザーテーブルの列 roleID と companyID とユーザーエンティティのそれぞれのプロパティを実行します

    /**
     * @ORM\Column(type="integer")
     * @ORM\ManyToOne(targetEntity="\Auth\Entity\Role", inversedBy="user") 
     * @ORM\JoinColumn(name="roleID", referencedColumnName="id")    
     */
    protected $roleID;

    /**
     * @ORM\Column(type="integer")
     * @ORM\ManyToOne(targetEntity="\Auth\Entity\Company", inversedBy="user")
     * @ORM\JoinColumn(name="companyID", referencedColumnName="id")     
     */
    protected $companyID;

ユーザーコントローラーで、次の行を使用してレコードを追加しようとすると、レコードは正常に追加されますが、roleID と companyID はありません

           $userData = array("username" => $username, "pass" => $secPass,
                "salt" => $salt, "companyID" => $companyID,
                "roleID" => $roleID, "cost" => $cost
            );


            $user->populate($userData);
            $this->getEntityManager()->persist($user);
            $this->getEntityManager()->flush();

しかし、エンティティ ユーザーからこれら 2 つのプロパティを削除すると、roleID と companyID も追加されます

protected $company;
protected $role;

しかし、上記のプロパティも必要です。なぜこの衝突なのか理解できませんでしたが、

誰もこの問題に直面しましたか?これを整理する方法は?何か案が?

4

1 に答える 1

1

以下のようにユーザーエンティティのプロパティを変更します

/**
 * 
 * @ORM\Column(type="integer")
 */
protected $roleID;

/**
 * 
 * @ORM\Column(type="integer")
 */
protected $companyID;


/**
 *
 * @ORM\ManyToOne(targetEntity="\Auth\Entity\Company", inversedBy="user")
 * @ORM\JoinColumn(name="companyID", referencedColumnName="id")
 */
protected $company;


/**
 *
 * @ORM\ManyToOne(targetEntity="\Auth\Entity\Role", inversedBy="user")
 * @ORM\JoinColumn(name="roleID", referencedColumnName="id")
 */
protected $role;

次に、ユーザーコントローラーで次のように追加します。それは私のために働いた

 $company = $this->getEntityManager()->find('Auth\Entity\Company', $companyID);                
    $role = $this->getEntityManager()->find('Auth\Entity\Role', $roleID);                

    $user->username = $username;
    $user->pass = $secPass;
    $user->salt = $salt;
    $user->company = $company;
    $user->role = $role;
    $user->cost = $cost;                

    $this->getEntityManager()->persist($user);
    $this->getEntityManager()->flush();
于 2012-10-22T11:21:53.623 に答える