Php 坚持一对多/多对多的链接-原则和符号2

Php 坚持一对多/多对多的链接-原则和符号2,php,symfony,doctrine,relationships,Php,Symfony,Doctrine,Relationships,我有一个多对多的用户和帐户实体使用。我需要向关联表中添加一个isOwner字段,因此我将其更改为一对多/多对一关系。下面是我的3个实体用户、帐户、用户帐户 当我持久化用户时,会添加用户记录和帐户记录,但不会添加关联记录。我也不确定如何在保留用户的同时设置isOwner字段 有人知道如何持久化关联记录吗?是否应自动添加关联记录 用户: 账户: /** * xxx\CoreBundle\Entity\Account * * @ORM\Table(name="account") * @ORM\

我有一个多对多的用户和帐户实体使用。我需要向关联表中添加一个isOwner字段,因此我将其更改为一对多/多对一关系。下面是我的3个实体用户、帐户、用户帐户

当我持久化用户时,会添加用户记录和帐户记录,但不会添加关联记录。我也不确定如何在保留用户的同时设置isOwner字段

有人知道如何持久化关联记录吗?是否应自动添加关联记录

用户:

账户:

/**
 * xxx\CoreBundle\Entity\Account
 *
 * @ORM\Table(name="account")
 * @ORM\Entity(repositoryClass="xxx\CoreBundle\Repository\AccountRepository")
 */
class Account
{
    /**
     * @var integer $id
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @var string $name
     *
     * @ORM\Column(name="name", type="string", length=255, nullable=false)
     * @Assert\NotBlank()
     */
    private $name;

    /**
     * @var User
     *
     * @ORM\OneToMany(targetEntity="UserAccount", mappedBy="account", cascade={"persist"})
     */
    private $user;

    public function __construct()
    {
        $this->user = new \Doctrine\Common\Collections\ArrayCollection();
    }

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

    /**
     * Set name
     *
     * @param string $name
     */
    public function setName($name)
    {
        $this->name = $name;
    }

    /**
     * Get name
     *
     * @return string 
     */
    public function getName()
    {
        return $this->name;
    }

    /**
     * Add user
     *
     * @param xxx\CoreBundle\Entity\User $user
     */
    public function addUser(\xxx\CoreBundle\Entity\User $user)
    {
        $this->user[] = $user;
    }

    /**
     * Get user
     *
     * @return Doctrine\Common\Collections\Collection 
     */
    public function getUser()
    {
        return $this->user;
    }
}
用户帐户:

/**
 * xxx\CoreBundle\Entity\UserAccount
 *
 * @ORM\Table(name="user_account")
 * @ORM\Entity
 */
class UserAccount
{
    /**
     * @var integer $id
     *
     * @ORM\Column(name="id", type="integer", nullable=false)
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="IDENTITY")
     */
    private $id;

    /**
     * @ORM\ManyToOne(targetEntity="User", inversedBy="account", cascade={"persist"})
     */
    private $user;

    /**
     * @ORM\ManyToOne(targetEntity="Account", inversedBy="user", cascade={"persist"})
     */
    private $account;

    /**
     * @var boolean $isOwner
     *
     * @ORM\Column(name="isOwner", type="boolean", nullable=false)
     */
    private $isOwner;

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

    /**
     * Set name
     *
     * @param string $name
     */
    public function setName($name)
    {
        $this->name = $name;
    }

     /**
     * Get isOwner
     *
     * @return bool 
     */
    public function getIsOwner()
    {
        return $this->isOwner;
    }

    /**
     * Set isOwner
     *
     * @param string $isOwner
     */
    public function setIsOwner($isOwner)
    {
        $this->isOwner = $isOwner;
    }

    /**
     * Set user
     *
     * @param xxx\CoreBundle\Entity\User $user
     */
    public function setUser(\xxx\CoreBundle\Entity\User $user)
    {
        $this->user = $user;
    }

    /**
     * Get user
     *
     * @return xxx\CoreBundle\Entity\User
     */
    public function getUser()
    {
        return $this->user;
    }

    /**
     * Set account
     *
     * @param xxx\CoreBundle\Entity\Account $account
     */
    public function setAccount(\xxx\CoreBundle\Entity\Account $account)
    {
        $this->account = $account;
    }

    /**
     * Get account
     *
     * @return xxx\CoreBundle\Entity\Account
     */
    public function getAccount()
    {
        return $this->account;
    }
}
控制器:

$account = new Account();
$account->setName('Test account');

$user = new User();
$user->setFirstName('John');
$user->addAccount($account);

$manager->persist($user);
$manager->flush();

您正在尝试将帐户持久化为UserAccount实体。试试这个:

$account = new Account();
$account->setName('Test account');

$user = new User();
$user->setFirstName('John');

$user_account = new UserAccount();
$user_account->setAccount($account);
$user_account->setUser($user);

$manager->persist($user);
$manager->flush();

您正在尝试将帐户持久化为UserAccount实体。试试这个:

$account = new Account();
$account->setName('Test account');

$user = new User();
$user->setFirstName('John');

$user_account = new UserAccount();
$user_account->setAccount($account);
$user_account->setUser($user);

$manager->persist($user);
$manager->flush();

如果不手动持久化链接,就没有办法级联链接吗?这是关于您的数据库模型的。那么我的数据库模型呢?干杯。没有手动持久化链接就没有办法层叠链接吗?这是关于你的数据库模型的。那么我的数据库模型呢?干杯