【发布时间】:2015-06-04 16:17:30
【问题描述】:
我正在努力进行以下设置;
一篇文章有很多评论
一个评论只有一篇文章
目前我成功地不允许用户将评论插入到链接到不存在的 Article_Id 的数据库中......
当我尝试通过内部连接打印表格时,问题就出现了。我收到错误消息:
Notice: Undefined index: Article
这是我的控制器中的代码
$repository = $this->getDoctrine()->getRepository('AppBundle:Article');
$query = $repository->createQueryBuilder('a')
->innerJoin('a.comments','c')
->where('a.title LIKE :phrase')
->setParameter(':phrase','hello')
->getQuery();
这里是实体类 - 非常感谢任何帮助。
文章实体
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use Symfony\Component\Validator\Constraints as Assert;
/**
* @ORM\Entity
* @ORM\Table(name="article")
*/
class Article {
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length=100)
* @Assert\NotBlank()
*/
protected $title;
/**
* @ORM\OneToMany(targetEntity="Comment", mappedBy="Article") << ERROR HERE I BELEIVE
*/
protected $comments;
/**
* @return mixed
*/
public function getId()
{
return $this->id;
}
/**
* @param mixed $id
*/
public function setId($id)
{
$this->id = $id;
}
/**
* @return mixed
*/
public function getTitle()
{
return $this->title;
}
/**
* @param mixed $title
*/
public function setTitle($title)
{
$this->title = $title;
}
/**
* @return mixed
*/
public function getComments()
{
return $this->comments;
}
/**
* @param mixed $comments
*/
public function setComments($comments)
{
$this->comments = $comments;
}
}
评论实体
<?php
namespace AppBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
use AppBundle\Entity\Article;
/**
* @ORM\Entity
* @ORM\Table(name="comment")
*/
class Comment {
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @ORM\Column(type="string", length=300)
*/
protected $text;
/**
* @ORM\Column(type="integer")
* @ORM\ManyToOne(targetEntity="article", inversedBy="comment")
* @ORM\JoinColumn(name="article_id", referencedColumnName="id", onDelete="CASCADE")
*/
protected $article_id;
/**
* @return mixed
*/
public function getId()
{
return $this->id;
}
/**
* @param mixed $id
*/
public function setId($id)
{
$this->id = $id;
}
/**
* @return mixed
*/
public function getText()
{
return $this->text;
}
/**
* @param mixed $text
*/
public function setText($text)
{
$this->text = $text;
}
/**
* @return mixed
*/
public function getArticleId()
{
return $this->article_id;
}
/**
* @param mixed $article_id
*/
public function setArticleId($article_id)
{
$this->article_id = $article_id;
}
}
【问题讨论】:
-
您还应该在文章的
__construct方法中将您的comments初始化为ArrayCollection。