嗨,我有以下课程
/**
* MP\User\RegistrationBundle\Entity
*/
namespace MP\User\RegistrationBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\Common\Persistence\PersistentObject;
use MP\Services\SiteAdapterBundle\Util\String;
/**
* @ORM\Table(name="customer")
* @ORM\Entity(repositoryClass="MP\User\RegistrationBundle\Repositories\CustomerRepository")
* @ORM\HasLifecycleCallbacks
*/
class Customer extends PersistentObject
{
/**
* @var string $id
* @ORM\Id
* @ORM\Column(name="icustomer_id", type="integer")
*/
protected $id;
/**
* @var string $addresses
* @ORM\OneToMany(targetEntity="MP\User\RegistrationBundle\Entity\Address", mappedBy="customer", cascade={"remove"})
*/
protected $addresses;
Run Code Online (Sandbox Code Playgroud)
具有以下关系
/**
* MP\User\RegistrationBundle\Entity
*/
namespace MP\User\RegistrationBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Persistence\PersistentObject;
/**
* @ORM\Table(name="custdeladd")
* @ORM\Entity(repositoryClass="MP\User\RegistrationBundle\Repositories\AddressRepository")
*/
class Address extends PersistentObject
{
/**
* @var integer $suffix
* @ORM\Column(name="isuffix", type="integer")
* @ORM\Id
*/
protected $suffix;
/**
* @var object $customer
* @ORM\ManyToOne(targetEntity="MP\User\RegistrationBundle\Entity\Customer", inversedBy="addresses", cascade={"persist"})
* @ORM\JoinColumn(name="icustomer_id", referencedColumnName="icustomer_id")
*/
protected $customer;
}
Run Code Online (Sandbox Code Playgroud)
有人知道为什么当客户被删除时地址不是吗?非常感谢
Cyp*_*ian 38
你的关系定义似乎很好.删除客户的方式是什么?我的意思是Doctrine没有直接在数据库中设置"ON DELETE CASCADE".因此,如果您以"学说"之外的其他方式删除客户实体,则不会删除注释.
您可以通过添加注释告诉doctrine直接在数据库中设置它:
@ORM\JoinColumn(name="icustomer_id", referencedColumnName="icustomer_id", onDelete="CASCADE")
Run Code Online (Sandbox Code Playgroud)
但是如果你试图以正确的教条方式删除实体,这仍然不起作用,尝试将"orphanRemoval"添加为true,它应该有所帮助:
// Customer.php
/**
* @var string $addresses
* @ORM\OneToMany(targetEntity="MP\User\RegistrationBundle\Entity\Address", mappedBy="customer", cascade={"remove"}, orphanRemoval=true)
*/
protected $addresses;
Run Code Online (Sandbox Code Playgroud)
Hen*_*nry 10
让这个工作起来我有点麻烦.以下是一些可能有助于遇到类似问题的观点:
@OneToMany( ... cascade={"remove"}或cascade={"all"} ) @JoinColumn(... onDelete="CASCADE")onDelete="CASCADE"部件,我相信您需要在更改生效之前更新架构.| 归档时间: |
|
| 查看次数: |
24345 次 |
| 最近记录: |