有四张表
Articles:(id, body)
Questions (id, body)
Votes (id, user_id, votable_id, vote_type)
comments(id, user_id, body, commentable_id, comment_type)
vote存储用户对Articles和Questions的点赞记录;使用vote_type区分存储的记录是对文章还是问题的点赞
id | user_id | votable_id | vote_type | 说明 |
---|---|---|---|---|
1 | 2 | 1 | article | 该记录表示用户2对文章1的点赞 |
1 | 2 | 1 | question | 该记录表示用户2对问题1的点赞 |
comments存储用户对Articles和Questions的回复记录;使用commentable_type区分存储的记录是对文章还是问题的回复
id | user_id | commentable_id | comment_type | 说明 |
---|---|---|---|---|
1 | 2 | 1 | article | 该记录表示用户2对文章1的回复 |
1 | 2 | 1 | question | 该记录表示用户2对问题1的回复 |
背景结束;
那么怎么声明他们之间的mapping关系呢;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity
* @ORM\Table(name="articles")
*/
class Article
{
//...
/**
*
* @ORM\OneToMany(targetEntity="Vote", mappedBy="votable")
*/
$votes;
}
class Vote
{
//...
/**
*
* @ORM\ManyToOne(targetEntity="Article|Question?", inversedBy="votes")
*/
$votes;
}
其他类似,另外,查询时添加Criteria,参见https://www.boxuk.com/insight...