ZF2学说服务 - 多个呼叫



我已经为我的应用程序设置了日记服务。这个想法是将服务注入我的控制器(尽管是工厂),然后根据将日记条目存储到DB所需的需要调用日记方法。我遇到的问题是,如果我在控制器操作中多次调用该方法,我只会将最后一个条目存储在数据库中。这是日记服务:: Diaryentry -

public function diaryEntry($projectUrn, $msg, $diaryCategory = 14)
{
    $em             = $this->em;
    $user           = $this->user;
    $ProjectDiary   = $this->projectDiaryEntity;
    if(is_numeric($projectUrn)) {
        $projectUrn = $em->find('ApplicationEntityProjectUrn', $projectUrn);
    }
    $ProjectDiary->setProjectUrn($projectUrn);
    $ProjectDiary->setDiaryCategory($em->find('ApplicationEntityDiaryCategory', $diaryCategory));
    $ProjectDiary->setStatus(1);
    $ProjectDiary->setComment($msg);
    $ProjectDiary->setUser($em->getRepository('ApplicationEntityUsers')->findOneBy(['username' => $user->username]));
    $ProjectDiary->setTimestamp(new DateTime());
    $em->persist($ProjectDiary);
    $em->flush();
    return;
}

在控制器操作中,我有类似的东西:

$this->diaryService->diaryEntry($order->getProjectUrn(), 'test msg 1);
$this->diaryService->diaryEntry($order->getProjectUrn(), 'test msg 2);

问题仅是MSG 2保存在DB中,MSG 1没有保存。最后一个更新是在日记方法结束时添加冲洗,但这并没有改变。有人在我想解决这个问题的地方有什么想法吗?是不良的架构,也许不适合作为服务,应该利用其他东西吗?

我很乐意粘贴应用程序所需的任何其他代码

预先感谢您的任何帮助

如果您发布有关$this->projectDiaryEntity的初始化信息,它将有所帮助,但是我敢打赌您通过工厂注入日记实体对象,因此所有操作都在同一对象上完成。

尝试用这一条替换您的行: $ProjectDiary = clone $this->projectDiaryEntity;

您的方法看起来不好,但是很难根据几行的几行说出要更改的内容。

如果您的默认status1,则可以在实体类中设置它。时间戳也是如此。

相关内容

  • 没有找到相关文章

最新更新