我正在使用symfony4框架开发一个Web应用程序。在这个程序中,我处理事件。这些事件通过另一个称为参与的类与用户链接。为了确保新来者不能注册过去的活动,我在活动的第一次持续时间创建参与者,为所有已经注册的用户添加参与者。为此,我宣布了服务
service:
App\EventListener\CreateParticipations:
tags:
- { name: doctrine.event_listener, event: postPersist }
arguments: [ "@doctrine.orm.entity_manager" ]
如此定义:
<?php
namespace App\EventListener;
use Doctrine\Common\Persistence\Event\LifecycleEventArgs;
use App\Entity\Participation;
use App\Entity\Event;
use App\Entity\User;
use Doctrine\ORM\EntityManager;
class CreateParticipations
{
private $em; // EntityManager
public function __construct(EntityManager $entityManager)
{
$this->em = $entityManager;
}
public function postPersist(LifecycleEventArgs $args)
{
$event = $args->getObject();
if ($event instanceof Event) {
$users = $this->em->getRepository(User::class)->findAll();
$nbUser = count($users);
for ($i=0; $i < $nbUser; $i++)
{
$participation = new Participation ();
$participation->setUser($users[$i]);
$participation->setEvent($event);
$this->em->persist($participation);
}
$this->em->flush();
}
return;
}
}
它与我创建的add / new事件过程一起正常工作。但是,当我使用以下代码创建夹具来测试我的应用程序时:
class AppFixtures extends Fixture
{
public function load(ObjectManager $manager)
{
//creation of the users and tags
//event creator
$nbEvent = 1;
$events = array($nbEvent);
for ($i=0; $i< $nbEvent; $i++)
{
$events[$i] = new Event();
$date = $faker->dateTimeThisMonth($max = 'now', $timezone = null);
$fin = new \DateTime($date->format('Y-m-d H:i:s'));
$events[$i]->setStart($date);
$events[$i]->setFinish($fin->add(new \DateInterval('PT2H')));
$events[$i]->setInfo($faker->sentence(10, true));
$events[$i]->setMaxPlayers(10);
$events[$i]->setName($faker->word());
$events[$i]->setTag($tag[$faker->numberBetween(0, 2)]);
$events[$i]->setActive(true);
$location = new Location();
$location->setFullAdr($faker->address());
$location->setLat($faker->latitude($min = -90, $max = 90));
$location->setLng($faker->longitude($min = -180, $max = 180));
$events[$i]->setLocation($location);
$manager->persist($events[$i]);
}
}
}
数据库中刷新的第一个事件没有关联的参与。你看到这种奇怪的行为是从哪里来的吗?
这是我的第一篇关于堆栈溢出的文章,如果我的问题不清楚,请立即纠正我的想法