Zend framework Zend-原则2插入数据/关联映射

Zend framework Zend-原则2插入数据/关联映射,zend-framework,doctrine,doctrine-orm,Zend Framework,Doctrine,Doctrine Orm,我终于为我的两个表设置了映射,现在我可以通过querybuilder连接表了 但是,我无法将数据添加到联接列,它一直显示null 我的账户实体: namespace Entities\Users; /** * @Entity(repositoryClass="\Entities\Users\Account") * @Table(name="account") * @HasLifecycleCallbacks */ class Account extends \Entities\Abst

我终于为我的两个表设置了映射,现在我可以通过querybuilder连接表了

但是,我无法将数据添加到联接列,它一直显示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();
而且它没有增加。。向父表添加数据的方法是什么?在父表中,所有链接表都会得到更新?因为以前我可以输入profileid,现在它为空,因为我将它用作联接列。

如果在关系定义中设置
cascade=[persist]
,则可以“更新”链接对象。您还需要为关系的双方设置@mappedBy和@inversedBy。基本上,@mappedBy设置为单侧(称为反向侧),而@inversedBy设置为多侧(称为拥有侧)

正确的方法基本上是

//assume $this->_doctrine is instance of EntityManager
$user = new User();
$user->setEmail('john@example.com');
$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();

对于OneToMany,您不需要joincolumn,然后使用
setData
到$obj,这不清楚它的作用,因为您没有显示$obj是什么,但似乎问题就在那里。
$em->remove($object\u to\u delete)