在我的用户实体中我有一些字段,负责一些用户喜欢的帖子:
/**
* @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());
}
答案 0 :(得分:0)
没有理由不在您的实体中使用方法。在你的特殊情况下,这是要走的路。
答案 1 :(得分:0)
这里的神奇词是"负责" 。
请记住,Doctrine
只是一个可以帮助您保持持久性的库。 不得影响您的业务逻辑。忽略持久性并问自己:"谁负责管理用户喜欢?" 答案告诉您确切地放置处理它们的代码的位置。
更准确地说,列出的方法与类$postsLikes
的{{1}}属性相关联。你不敢把它们搬到另一个班级。