2011-06-29 11 views
0

私はようやく私の二つのテーブルのための私のマッピングを設定、私は今querybuilder経由でテーブルを結合することができます。..Zendの - 教義2挿入データ/団体マッピング

しかし、私はそのを維持し、結合列にデータを追加カントnullと言っています。

アカウントエンティティ:

namespace Entities\Users; 

/** 
* @Entity(repositoryClass="\Entities\Users\Account") 
* @Table(name="account") 
* @HasLifecycleCallbacks 
*/ 
class Account extends \Entities\AbstractEntity { 

    /** 
    * @Id @Column(name="accid", type="bigint",length=15) 
    * @GeneratedValue(strategy="AUTO") 
    */ 
    protected $accid; 

    /** @Column(name="name", type="string", length=255) */ 
    protected $name; 

    /** @Column(name="profileid", type="integer", length=255) */ 
    protected $profileid; 


    /** @Column(name="acc_added_date", type="datetime", columnDefinition="datetime", nullable=true) */ 
    private $acc_added_date; 

    /** 
    * @ManyToOne(targetEntity="Profiledetails") 
    * @JoinColumn(name="profileid", referencedColumnName="pid") 
    */ 
    private $account; 

と私のprofiledetailsエンティティ:

私が使用するために使用する
namespace Entities\Users; 

/** 
* @Entity(repositoryClass="\Entities\Users\Profiledetails") 
* @Table(name="profiledetails") 
* @HasLifecycleCallbacks 
*/ 
class Profiledetails extends \Entities\AbstractEntity { 

    /** 
    * @Id @Column(name="pid", type="bigint",length=15) 
    * @GeneratedValue(strategy="AUTO") 
    */ 
    protected $accid; 
    /** @Column(name="name", type="string", length=255) */ 
    protected $name; 
    /** @Column(name="profileid", type="integer", length=255) */ 
    protected $profileid; 
    /** @Column(name="acc_added_date", type="datetime", columnDefinition="datetime", nullable=true) */ 
    private $acc_added_date; 
    /** 
    * @OneToMany(targetEntity="Account", mappedBy="account") 
    * @JoinColumn(name="pid", referencedColumnName="pid") 
    */ 
    private $stances; 

$postdata array ('name'=>'jason'); 
    $entity =new \Entities\Users\Account; 
    $obj->setData($postdata); 

    $this->_doctrine->persist($obj); 
    $this->_doctrine->flush(); 
    $this->_doctrine->clear(); 

、それは道を追加するために何を..追加doesntのすべてのリンクテーブルが更新される親テーブルへのデータ私が結合された列としてそれを使用したので、私はprofileidと今はnullを入力することができます。

+0

あなたはOneToManyのためのjoincolumnを必要としません。そして、あなたは$ objを表示しないので問題があるように見えるので、あなたは何をしているのか分からない 'setData'を$ objに使います。 – venimus

答えて

1

あなたの関係定義にcascade=[persist]を設定すると、リンクされたオブジェクトは "更新"できます。リレーションの両側に@mappedByと@inversedByを設定する必要もあります。基本的に@mappedByはmanyToOne側にoneToMany(逆側という)側と@inversedBy(と呼ばれる所有側)に設定されている

http://www.doctrine-project.org/docs/orm/2.0/en/reference/association-mapping.html#one-to-many-bidirectional

適切な方法は、基本的

//assume $this->_doctrine is instance of EntityManager 
$user = new User(); 
$user->setEmail('[email protected]'); 
$account = new Account(); 
$account->setName('john'); 
$account->setUser($user); 
$user->addAccount($account); //if no cascade set 
$this->_doctrine->persist($account); 
$this->_doctrine->persist($user); //if no cascade set 
$this->_doctrine->flush(); 

http://www.doctrine-project.org/docs/orm/2.0/en/reference/working-with-associations.html#establishing-associations

あります
+0

どうすれば削除できますか? –

+0

'$ em-> remove($ object_to_delete);' – venimus