从现有表而不是从控制台生成实体

时间:2019-07-15 10:51:44

标签: php symfony doctrine

在能够与其他人的帖子和答案一起管理之后,这是有史以来的第一篇帖子。

我创建了一个事件侦听器,需要在其中创建一个“子”实体,以便将其添加到“父”实体的arrayCollection中。 我之前已经创建了实体,没有收到错误消息,但是看来该实体实际上从未真正创建过,也没有添加到父级的实体arrayCollection中。

已经检查了其他帖子,但是它指示了如何从控制台创建新实体,因此在这种情况下对我没有多大帮助。

代码如下所示。

我知道我可以使用它,因为我可以转储局部变量。我还可以看到$entityEvent对象,但是它永远都不会以某种方式保存。

如果我错过了项目代码中其他地方的任何更改,以防万一:

  • 尝试使用EntityManager而不是objectManager持久化实体。
  • 已在数据库中完成了架构更新。
namespace App\Event\Listener;

# Doctrine Components
use Doctrine\ORM\Event\LifecycleEventArgs;
use Doctrine\ORM\EntityManagerInterface;

# App Components
use App\Entity\Api\Entity;
use App\Entity\Api\EntityEvent;
use Doctrine\ORM\Event\PreUpdateEventArgs;

// Entity repository
// use App\Entity\Api\Repository\entityEventEntityRepository;

class EntityListener   {
    public $em;

    public function __construct(EntityManagerInterface $em)  {
        $this->em = $em;
    }


    public function postUpdate(Entity $entity, LifecycleEventArgs $event) {
        $objectManager = $event -> getObjectManager();

        $entityEvent = new entityEvent();
        $entityEvent -> setEntity($entity);
        $entityEvent -> setStatus($entity -> getStatus());

        $entity -> addEntityEvent($entityEvent);

        $objectManager -> persist($entityEvent);
        $objectManager -> flush();

    }

}

我本来希望$entityEvent能够持久存在并刷新到数据库中,并且$ entity对象会正确地将其添加到数据库中。

相反,什么也得不到保存。

为什么我没有得到预期的行为?

0 个答案:

没有答案