mysql – 如何在doctrine中插入非常引用

我有3个实体:用户,页面,帖子

在Post实体中:

class Post
{
    /**
     * @ORM\ManyToOne(targetEntity="Page")
     */
    private $page;

    /**
     * @var ArrayCollection $subscribers Specify users that see this post.
     *
     * @ORM\ManyToMany(targetEntity="User", inversedBy="wallPosts")
     */
    private $subscribers;
}

在页面中:

class Page
{
    /**
     * @ORM\ManyToMany(targetEntity="User")
     */
    private $members;
}

发布帖子时,我希望所有作为Page成员的用户都被设置为Post的子成员

$后> setSubscribers($后> GETPAGE() – > getMembers())

注意:页面可以拥有数千个用户,具有最佳性能的最佳方式是什么?我应该使用本机查询,数据库触发器还是程序?

最佳答案 你可以循环做.每次迭代订阅50个用户到新帖子.

不要忘记清理学说内部存储.主要想法是

$page = $post->getPage();
for ($i = 1;; ++$i) {
  $members = $page->getPagindatedMembers($i);
  if (empty($members)) {
     break;
  }
  foreach ($members as $member) {
     $post->addSubscriber($member);
  }
  $em->flush();
  $em->clear(Member::class);
}
点赞