【问题标题】:Adding a timestamp property to a relation in Symfony2向 Symfony2 中的关系添加时间戳属性
【发布时间】:2011-09-28 05:31:55
【问题描述】:

我正在尝试使用 2 个实体(用户和帖子)来建模一个简单的评论系统。 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;
}

我需要做一个简单的关联——用户可以收藏帖子。合乎逻辑的做法是将 User 类中的 ManyToMany 关联添加到 Post 像这样

@ORM\ManyToMany(targetEntity="Post")

然后会创建一个以 user_id 和 post_id 作为主键的映射表。现在我的问题是我需要添加一个时间戳属性来跟踪用户喜欢帖子的时间。一种可能性是创建一个新实体“FavouritePost”,使用 ManyToOne 关联将其映射到 User 和 Post 类,并向其添加时间戳属性。

1) 这是在 Symfony2 中正确/唯一的方法吗?
2) 如果我想选择最近的 15 个帖子,并检查当前登录的用户是否喜欢这些帖子,我该如何编写查询?

感谢您的帮助,因为我对如何通过 Symfony 做到这一点一无所知

【问题讨论】:

    标签: doctrine-orm symfony


    【解决方案1】:

    1) 是的,您可以创建一个关节表,以及它的 FavouritePost 实体。

    2) 您应该使用Repository 来创建所有特殊查询:

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

    然后是简单的教义查询,就像你会做更多。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-16
      • 1970-01-01
      相关资源
      最近更新 更多