我有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);
}