学说 - 我对级联删除感到困惑

时间:2014-06-14 14:25:08

标签: php mysql symfony doctrine-orm doctrine

我有一个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....

史蒂夫

编辑: 从级联中删除了所有条目,现在可以使用了。

0 个答案:

没有答案