1
私はエンティティが2つあります:ユーザーと愛。これは「1対多、双方向」です。ここで別のエンティティ内のエンティティを削除するシンフォニー
は私の実体である:
ユーザー:
namespace SE\UserBundle\Entity;
/**
* User
*
* @ORM\Table(name="user")
* @ORM\Entity(repositoryClass="SE\UserBundle\Repository\UserRepository")
*/
class User extends BaseUser
{
//...
/**
* One User has Many Loves.
* @ORM\OneToMany(targetEntity="SE\CoreBundle\Entity\Love", mappedBy="user", cascade={"persist"})
*/
private $loves;
//...
public function __construct()
{
//...
$this->loves = new ArrayCollection();
//...
}
//...
/**
* Remove love
*
* @param \SE\CoreBundle\Entity\Love $love
*/
public function removeLove(\SE\CoreBundle\Entity\Love $love)
{
$this->loves->removeElement($love);
//delete love
}
//...
}
愛:
namespace SE\CoreBundle\Entity;
/**
* Love
*
* @ORM\Table(name="love")
* @ORM\Entity(repositoryClass="SE\CoreBundle\Repository\LoveRepository")
*/
class Love
{
//...
/**
* Many Loves have One User.
* @ORM\ManyToOne(targetEntity="SE\UserBundle\Entity\User", inversedBy="loves", cascade={"persist"})
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
*/
private $user;
//...
/**
* Set user
*
* @param \SE\UserBundle\Entity\User $user
*
* @return Love
*/
public function setUser(\SE\UserBundle\Entity\User $user = null)
{
$this->user = $user;
return $this;
}
//...
}
私の質問は: 私は私のユーザーにremoveLove()
を実行する方法は、あります、私のコントローラでエンティティマネージャを使用せずに、対応するLoveエンティティのオートデートをデータベースに保存します。私はそのように見えるために私のコントローラをしたいと思います:
class DefaultController extends Controller
{
public function indexAction()
{
//...
$em = $this->getDoctrine()->getManager();
$user->removeLove($love);
$em->persist($user);
$em->flush();
//...
}
}
、結果は$love
は、データベースの削除となり$user
のgetLoves()
と$love
ではないだろう、ということでしょう。
に関連付けられている 'カスケード= {「持続」}' =カスケード 'へ{「持続」、「削除」}' – kunicmarko20
kunicmarko20 @ 'EntityManager :: remove'が呼び出されていないので、うまくいくとは思いません。 – CappY