Doctrine2实体中的一些逻辑

时间:2015-05-26 15:19:19

标签: php doctrine-orm

在我的用户实体中我有一些字段,负责一些用户喜欢的帖子:

/**
     * @var ArrayCollection
     *
     * @ORM\ManyToMany(targetEntity="Post")
     * @ORM\JoinTable(name="posts_likes",
     *      joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id", onDelete="CASCADE")},
     *      inverseJoinColumns={@ORM\JoinColumn(name="post_id", referencedColumnName="id", onDelete="CASCADE")}
     * )
     **/
    protected $postsLikes;

问题是:在实体中使用以下方法是否正常:

/**
     * @return array
     */
    public function getPostsLikesIds()
    {
        $ids = [];

        if ($this->postsLikes) {
            var_dump($this->postsLikes);
            foreach ($this->postsLikes as $postLike) {
                $ids[] = $postLike->getId();
            }
        }

        return $ids;
    }

    /**
     * @param $postId
     * @return bool
     */
    public function isPostLiked($postId)
    {
        return in_array($postId, $this->getPostsLikesIds());
    }

2 个答案:

答案 0 :(得分:0)

没有理由不在您的实体中使用方法。在你的特殊情况下,这是要走的路。

答案 1 :(得分:0)

这里的神奇词是"负责"

请记住,Doctrine只是一个可以帮助您保持持久性的库。 不得影响您的业务逻辑。忽略持久性并问自己:"谁负责管理用户喜欢?" 答案告诉您确切地放置处理它们的代码的位置。

更准确地说,列出的方法与类$postsLikes的{​​{1}}属性相关联。你不敢把它们搬到另一个班级。