删除我试图删除父实体,我记得我上次的网站这样评论,但现在它不工作..学说2.1 - 从收集
我的实体 - 用户
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:
我removeElement直后,我通过用户ID = 23的数据集循环,并为评论数据id375不存在...所以它从收集中删除它,但不是从数据库中,我认为$em->flush()
应该这样做?
请告知
感谢
难道你不需要告诉entitymanager在flush之前坚持$ userResults吗? – xanido 2012-04-19 12:42:21