からの削除 - ユーザードクトリン2.1 -</p> <p>私のエンティティ..私は、私は私の最後のウェブサイト上でこれをやって覚えて親エンティティからコメントを削除しようとしていますが、今、それは働いていないコレクション
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();
何も削除されていない、どちらもそれはそれはしていない私に教えて例外をスローします。
私の教義は、あまりにもそれをフラッシュデシベルをチェックし、それはまだそこにあります。..
UPDATE:
ストレートI removeElementた後、私は、ユーザーID = 23のデータセットを通じてループ、およびコメントデータid375はそこにはないのでコレクションから削除しましたがDBからは削除しませんでした。$em->flush()
はこれを行うと考えていましたか?
おかげ
$em->remove($commentToDelete);
$em->flush();
を使用する必要が
フラッシュする前に、$ userResultsを保持するようにentitymanagerに指示する必要はありませんか? – xanido