Добавление свойства временной метки к отношению в Symfony2 - PullRequest
2 голосов
/ 28 сентября 2011

Я пытаюсь смоделировать простую систему комментариев с двумя объектами - Пользователь и Сообщение. Класс User имеет обычные свойства, а класс Post выглядит следующим образом:

class Post
{
/**
 * @var integer $id
 *
 * @ORM\Column(name="id", type="integer")
 * @ORM\Id
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * User who posted activity
 *
 * @var User
 * @ORM\ManyToOne(targetEntity="Acme\AppBundle\Entity\User")
 */
protected $user;

/**
 * @var string $text
 *
 * @ORM\Column(name="text", type="string", length=255)
 */
private $text;

/**
 * @var datetime $timestamp
 *
 * @ORM\Column(name="timestamp", type="datetime")
 */
private $timestamp;
}

Мне нужно сделать простую ассоциацию - пользователи могут добавлять избранные сообщения. Логично было бы добавить ассоциацию ManyToMany в классе User к Post следующим образом:

@ORM\ManyToMany(targetEntity="Post")

Что затем создаст таблицу сопоставления с user_id и post_id в качестве первичных ключей. Теперь моя проблема в том, что мне нужно добавить свойство отметки времени, чтобы отслеживать, когда пользователю понравилась запись. Одной из возможностей является создание нового объекта "FavouritePost", сопоставление его с классом User и Post с использованием ассоциации ManyToOne и добавление в него свойства отметки времени.

1) Это правильный / единственный способ сделать это в Symfony2?
2) Если я хочу выбрать последние 15 постов и проверить, понравились ли посты зарегистрированному в данный момент пользователю, как я могу написать запрос для этого?

Любая помощь приветствуется, так как я рисую бланк о том, как сделать это через Symfony

1 Ответ

0 голосов
/ 28 сентября 2011

1) Да, вы можете создать таблицу соединений и, следовательно, ее сущность FavouritePost.

2) Для создания всех специальных запросов вы должны использовать Репозиторий :

@ORM \ Entity (repositoryClass = "Acme \ AppBundle \ Repository \ FavouritePostRepository")

Тогда это просто Doctrine запросы, как вы сделаете гораздо больше.

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