Ada empat meja
Articles:(id, body)
Questions (id, body)
Votes (id, user_id, votable_id, vote_type)
comments(id, user_id, body, commentable_id, comment_type)
vote menyimpan rekod suka pengguna untuk Artikel dan Soalan; gunakan vote_type untuk membezakan sama ada rekod yang disimpan adalah suka untuk artikel atau soalan
id | user_id | votable_id | vote_type | Arahan |
---|---|---|---|---|
1 | 2 | 1 | artikel | Rekod ini menunjukkan bahawa pengguna 2 menyukai artikel 1 |
1 | 2 | 1 | soalan | Rekod ini menunjukkan bahawa pengguna 2 menyukai soalan 1 |
komen menyimpan rekod respons pengguna kepada Artikel dan Soalan; gunakan commentable_type untuk membezakan sama ada rekod yang disimpan adalah jawapan kepada artikel atau soalan
id | user_id | commentable_id | jenis_komen | Arahan |
---|---|---|---|---|
1 | 2 | 1 | artikel | Rekod ini mewakili balasan pengguna 2 kepada artikel 1 |
1 | 2 | 1 | soalan | Rekod ini mewakili jawapan pengguna 2 kepada soalan 1 |
Tamat latar belakang;
Jadi bagaimana untuk mengisytiharkan hubungan pemetaan antara mereka;
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;
}
Lain-lain adalah serupa Selain itu, tambah Kriteria semasa membuat pertanyaan, lihat https://www.boxuk.com/insight...
@boxsnake Ini akan mencipta soalan baharu