Es gibt vier Tische
Articles:(id, body)
Questions (id, body)
Votes (id, user_id, votable_id, vote_type)
comments(id, user_id, body, commentable_id, comment_type)
vote speichert die Like-Datensätze der Benutzer für Artikel und Fragen. Verwenden Sie vote_type, um zu unterscheiden, ob es sich bei den gespeicherten Datensätzen um Likes für Artikel oder Fragen handelt
Benutzer-ID | votable_id | vote_type | Anleitung | |
---|---|---|---|---|
2 | 1 | Artikel | Dieser Datensatz zeigt an, dass Benutzer 2 Artikel 1 mit „Gefällt mir“ markiert hat | |
2 | 1 | Frage | Dieser Datensatz zeigt an, dass Benutzer 2 Frage 1 mit „Gefällt mir“ markiert hat |
Benutzer-ID | commentable_id | comment_type | Anleitung | |
---|---|---|---|---|
2 | 1 | Artikel | Dieser Datensatz stellt die Antwort von Benutzer 2 auf Artikel 1 dar | |
2 | 1 | Frage | Dieser Datensatz stellt die Antwort von Benutzer 2 auf Frage 1 dar |
So deklarieren Sie die Zuordnungsbeziehung zwischen ihnen;
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 这样会有个新的问题