私の質問は、すべての関連付けを経ずに手動でエンティティを削除して手動で削除する方法です。この例ではSymfony Doctrineの関係 - 逆側のエンティティを削除する
<?php
/** @Entity */
class User
{
// ...
/**
* @OneToMany(targetEntity="Address", mappedBy="user")
*/
private $addresses;
// ...
public function __construct() {
$this->addresses = new ArrayCollection();
}
}
/** @Entity */
class Address
{
// ...
/**
* @ManyToOne(targetEntity="User", inversedBy="features")
* @JoinColumn(name="user_id", referencedColumnName="id")
*/
private $user;
// ...
}
、Address
は所有側であるので、外部キーの検証が失敗するので、私はUser
を削除することはできません。 Address
を削除してからUser
を削除する必要があります。このような10の関係がある場合、削除プロセスは苦痛です。
私はManyToMany
関係を作成することができますが、この方法はAddress
エンティティがusers
ないuser
を持っていますし、私はアドレスが一つだけのユーザーを持っていると思います。
これを行うにはどのような方法が最適ですか? @Max P.さんのコメントに追加するには
::私はので、私はここに私の2セントをあげるコメントするのに十分な評判がありません
オプション 'ondelete = cascade'でDB外部キーを作ることができるので、DBはすべての子を自動的に削除します。 –
どこにonDeleteを置くべきですか? ManyToOneの関係に? – nacholibre
http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/working-with-associations.html#transitive-persistence-cascade-operations –