Как управлять наследованием одной таблицы в Doctrine 2? - PullRequest
8 голосов
/ 28 апреля 2011

У меня есть комментарии и статьи, обе являются голосовыми.

Итак, в основном у меня есть три сущности, Article, Comment и Vote.

После некоторого прочтения Справочное руководство по наследованию одной таблицы в Doctrine2 , похоже, это то, что мне нужно, потому что мой Vote остается таким же, как Article или Comment.

В представлении ORM вот как я вижу свою таблицу Vote:

id | resource_id | resource_type | weight |

Я думаю, resource_type должен быть столбцом "дискриминатора", но я не совсем понимаю, как реализовать это в моей сущности.

Я пытаюсь избежать таблицы «Голосовать» для каждой из моих сущностей, поскольку голосующая сущность остается неизменной дляоба, кроме «resource_type», поэтому я пытаюсь найти способ в Doctrine2 иметь возможность иметь только одну Vote сущность для работы.

Ответы [ 2 ]

7 голосов
/ 29 апреля 2011

На основе примера из документов :

/**
 * @Entity
 * @InheritanceType("SINGLE_TABLE")
 * @DiscriminatorColumn(name="resource_type", type="string")
 * @DiscriminatorMap({"article_vote" = "ArticleVote", "comment_vote" = "CommentVote"})
 */
class Vote
{
    private $id;
    private $weight;
}

class ArticleVote extends Vote
{
    /** @ManyToOne(...) */
    private $article;
}

class CommentVote extends Vote
{
    /** @ManyToOne(...) */
    private $comment;
}
2 голосов
/ 03 июля 2013

Просто если кому-то еще это нужно, вот подробный пример использования Table Inheritance с Doctrine.Я нашел это более информативным, чем документация Доктрины:

http://blog.liip.ch/archive/2012/03/27/table-inheritance-with-doctrine.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...