Mengenai pelaksanaan penggunaan semula jadual symfony (doktrin).
怪我咯
怪我咯 2017-07-03 11:42:27
0
2
799

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;
}
怪我咯
怪我咯

走同样的路,发现不同的人生

membalas semua(2)
为情所困
use Doctrine\ORM\Mapping as ORM;
/**
 * @ORM\Entity
 * @ORM\Table(name="articles")
 */
class Article
{
    // ...
}

/**
 * @ORM\Entity
 * @ORM\Table(name="articles")
 */
class ArticleVote extends Article
{
    /**
     *
     * @OneToMany(targetEntity="VoteArticle", mappedBy="votable_id")
     */
    private $id;
}

/**
 * @ORM\Entity
 * @ORM\Table(name="articles")
 */
class ArticleComment extends Article
{
    /**
     *
     * @OneToMany(targetEntity="CommentArticle", mappedBy="commentable_id")
     */
    private $id;
}

/**
 * @ORM\Entity
 * @ORM\Table(name="votes")
 */
class Vote
{
    // ...
}

/**
 * @ORM\Entity
 * @ORM\Table(name="votes")
 */
class VoteArticle
{
    /**
     *
     * @ORM\ManyToOne(targetEntity="ArticleVote", inversedBy="id")
     */
    private $votable_id;
}

/**
 * @ORM\Entity
 * @ORM\Table(name="comments")
 */
class Comment
{
    // ...
}

/**
 * @ORM\Entity
 * @ORM\Table(name="comments")
 */
class CommentArticle
{
    /**
     *
     * @ORM\ManyToOne(targetEntity="ArticleComment", inversedBy="id")
     */
    private $commentable_id;
}

Lain-lain adalah serupa Selain itu, tambah Kriteria semasa membuat pertanyaan, lihat https://www.boxuk.com/insight...

为情所困

@boxsnake Ini akan mencipta soalan baharu

>php bin/console doctrine:schema:update --force


  [Doctrine\DBAL\Schema\SchemaException]
  The table with name 'symfony.votes' already exists.


doctrine:schema:update [--complete] [--dump-sql] [-f|--force] [--em [EM]] [-h|--help] [-q|--quiet] [-v|vv|vvv|--verbose] [-V|--version] [--ansi] [--no-ansi] [-n|--no-interaction] [-e|--env ENV] [--no-debug] [--] <command>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan