我有一个Symfony 2 / Doctrine测试应用程序,带有许多相关表。生成的CRUD操作给出了令人困惑的结果。
第一张表是国家列表。
第二个表是位置列表。
关系(显然):
国家多对一的位置。
我在国家桌上填写了世界上所有国家。
我创建了一个与“荷兰”国家相关的“阿姆斯特丹”
到目前为止,操作运行良好 - Symfony / Doctrine使用下拉菜单创建位置表单以选择国家/地区
现在问题:
删除位置后,相应的国家/地区记录已删除。这显然不是预期的行为。
countries表永远不会改变,所以我可以配置实体以防止任何级联更改?
/** * ORM Entity representing country * * Doctrine2 ORM Entity * With lifecycle callbacks to manage timestampable and blameable fields. * * Used to tie country name to ISO3166 3 character code. * Will use same code to name country flags in the interface. * * * @ORM\Entity(repositoryClass="Newgt\EventBundle\Entity\NewgtCountryRepository") * @ORM\Table(name="newgt_country") * @ORM\HasLifecycleCallbacks() / class NewgtCountry { /* * Database key * @var integer * @ORM\Column(type="integer") * @ORM\Id * @ORM\GeneratedValue */ private $id;....snip.....
/** * Country name * @var string * @ORM\Column(type="string", length=255, unique=true, nullable=false) */ private $country;
....snip....
/** * Mapping placeholder for NewgtLocation * @ORM\OneToMany(targetEntity="NewgtLocation", mappedBy="country", cascade={}, orphanRemoval=false) */ private $countries;
....snip....
use Doctrine\ORM\Mapping as ORM;
/** * NewgtLocation Entity * * Object describing a race location. * * @uses NewgtCountry::__toString to retrieve the country name * * @ORM\Entity(repositoryClass="Newgt\EventBundle\Entity\NewgtLocationRepository") * @ORM\Table(name="newgt_location") * @ORM\HasLifecycleCallbacks() / class NewgtLocation { /* * Database key * @var integer * @ORM\Id * @ORM\Column(type="integer") * @ORM\GeneratedValue */ private $id;
/** * Location name * @ORM\Column(type="string", length=255, unique=false, nullable=false) * @var string */ private $name;
....snip....
/** * Country from NewgtCountry table * @var \Newgt\EventBundle\Entity\NewgtCountry * @ORM\ManyToOne(targetEntity="NewgtCountry", cascade={}, fetch="LAZY") */ private $country;
....snip....
史蒂夫
编辑: 从级联中删除了所有条目,现在可以使用了。