【发布时间】:2010-07-25 10:28:35
【问题描述】:
我阅读了官方文档和大量线程,但仍然没有找到适合我的情况的解决方案。我的情况很基本。我有 2 个实体:它们的 cmets 和关键字。一条评论可以有多个关键词,但每个关键词只能用于一条评论。关键字在关键字表中不是唯一的。所以我决定这是一对多的关系。表结构简单如下:
关键字
id int(11)
comment_id int(11)
text varchar(30)
cmets
id int(11)
text text
这是我绘制它们的方式:
/**
* @Entity
* @Table(name="comments")
**/
class Comments
{
/** @Id @Column(type="integer") */
private $id;
/** @Column(type="text") */
private $text;
/**
* @OneToMany(targetEntity="keywords", mappedBy="comment_id")
*/
private $keywords;
public function getText(){return $this->text;}
public function getId(){return $this->id;}
public function getKeywords(){return $this->keywords;}
}
/**
* @Entity
* @Table(name="keywords")
*/
class Keywords
{
/** @Id @Column(type="integer") */
private $id;
private $text;
public function getText(){return $this->text;}
public function getId(){return $this->id;}
}
以及如何使用它是这样的:
$comments = $this->em->getRepository('comments' )->findAll();
foreach($comments as $comment){
foreach($comment->getKeywords() as $keyword){
$keyword->getText();
}
}
并得到这个错误:
怎么了?应该在哪里定义comment_id?我的映射正确吗?我真的卡住了,需要帮助,所以非常欢迎任何建议。
Notice: Undefined index: comment_id in C:\web_includes\doctrine\ORM\Persisters\BasicEntityPersister.php on line 1096
Notice: Trying to get property of non-object in C:\web_includes\doctrine\ORM\Persisters\BasicEntityPersister.php on line 1098
Warning: Invalid argument supplied for foreach() in C:\web_includes\doctrine\ORM\Persisters\BasicEntityPersister.php on line 1098
Notice: Undefined index: comment_id in C:\web_includes\doctrine\ORM\PersistentCollection.php on line 168
Fatal error: Call to a member function setValue() on a non-object in C:\web_includes\doctrine\ORM\PersistentCollection.php on line 169
【问题讨论】:
-
comment_id怎么样? betn cmets和keywords如何设置关系? -
comment_id 是关键字表中数据库中的一个字段,该字段具有该关键字所属评论的 id。我想在为 cmets 选择关键字时,学说会使用它。关系就是这样 OneToMany(targetEntity="keywords", mappedBy="comment_id") 对吗?