我有两个与ManyToMany关联的实体“产品”和“用户”。 我想在此关联中添加列。 为此,我必须创建另一个实体,并以一对多和多对一的关系将它们链接在一起。 所以问题是如何删除第一个关联“ ManyToMany”
来自:
class Product
{
/**
* @ORM\ManyToMany(targetEntity="User", mappedBy="products")
*/
private $users;
}
class User extends BaseUser
{
/**
* @ORM\ManyToMany(targetEntity="ManagementBundle\Entity\Product", inversedBy="users")
* @ORM\JoinTable(name="users_products")
*/
protected $products;
}
收件人:
class Product
{
/**
* @ORM\ManyToOne(targetEntity="OrderProduct", inversedBy="products",cascade={"persist"})
* @ORM\JoinColumn(name="OrderProduct_id", referencedColumnName="id")
*/
private $OrderProduct;
}
class User extends BaseUser
{
/**
* @var string
*
* @ORM\OneToMany(targetEntity="OrderProduct", mappedBy="user",cascade={"persist"})
*/
protected $orderProducts;
}
class OrderProduct
{
/**
* @ORM\ManyToOne(targetEntity="User", inversedBy="OrderProducts",cascade={"persist"})
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
private $user;
/**
* @var string
*
* @ORM\OneToMany(targetEntity="Product", mappedBy="OrderProduct",cascade={"persist"})
*/
private $products;
}
答案 0 :(得分:0)
您有两种选择: -让教义为您完成工作 -让Mysql做 选择取决于您的需要。
对于学说,使用
/**
* @var int
*å
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\ManyToMany(targetEntity="User", mappedBy="products", cascade={"remove"})
*/
private $users;
对于MySQL,告诉MySQL在删除时进行级联删除,例如:(在这种情况下,您应该更新数据库架构)
/**
* @var int
*å
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\ManyToMany(targetEntity="User", mappedBy="products")
* @ORM\JoinColumn(onDelete="CASCADE")
*/
private $users;
如果您希望它是双向的,只需将其添加到另一侧实体