有四張表
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...
@boxsnake 這樣會有個新的問題