親エンティティからコメントを削除しようとしています。前回の Web サイトでこれを行ったことを覚えていますが、現在は機能していません..
私のエンティティ - ユーザー
namespace Application\Entities;
use Doctrine\ORM\Mapping AS ORM,
Doctrine\Common\Collections\ArrayCollection;
/**
* Loan
*
* @ORM\Table(name="users")
* @ORM\Entity
*/
class Users{
/**
* @var integer $id
*
* @ORM\Column(type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var string $username
*
* @ORM\Column(type="string", length=45, nullable=false)
*/
private $username;
/**
* @var ArrayCollection
*
* @ORM\OneToMany(targetEntity="Comments", mappedBy="author", cascade={"persist", "remove"})
*/
private $comments;
public function getComments(){
return $this->comments;
}
そして私のコメントテーブル:
namespace Application\Entities;
use Doctrine\ORM\Mapping AS ORM,
Doctrine\Common\Collections\ArrayCollection;
/**
* Loan
*
* @ORM\Table(name="comments")
* @ORM\Entity
*/
class Comments{
/**
* @var integer $id
*
* @ORM\Column(type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var integer $user_id
*
* @ORM\Column(type="integer", length=15, nullable=false)
*/
private $user_id
/**
* @var Loan
*
* @ORM\ManyToOne(targetEntity="Users", inversedBy="comments",cascade={"persist"})
* @ORM\JoinColumns({
* @ORM\JoinColumn(name="user_id", referencedColumnName="id")
* })
*/
private $author;
これは問題ありません。動作し、ユーザー リポジトリでコメントと呼ばれるすべてのコレクションを取得します。
さて、私は通常、削除する必要があるときにこれを行います:
$commentToDelete = $this->em->getRepository('Entities\Comments')->findOneById(375);
$userResults = $this->em->getRepository('Entities\Users')->findOneById(23);
$userResults->getComments()->removeElement($commentToDelete);
$this->em->flush();
何も削除されず、削除されていないことを伝える例外もスローされません。
私もドクトリンをフラッシュし、データベースをチェックしましたが、まだそこにあります..
更新:
removeElement を削除した直後に、ユーザー id = 23 データセットをループしましたが、id375 のコメント データが存在しないため、コレクションからは削除されましたが、DB からは削除されませんでした$em->flush()
。 ?
アドバイスしてください
ありがとう