gpt4 book ai didi

php - 在服务中注入(inject) Doctrine 实体管理器以实现快速通知服务

转载 作者:可可西里 更新时间:2023-10-31 23:03:41 25 4
gpt4 key购买 nike

我是 symfony 2 的新手,正在阅读文档,我正在努力创建一个通知服务来通知用户列表一些更新(用户实体与通知实体处于 OneToMany 关系,只是为了让它清晰)

这是服务类:

<?php

namespace OC\UserBundle\Services;
use OC\UserBundle\Entity\Notification;
use Doctrine\ORM\EntityManager as EntityManager;

class Notificateur
{

protected $em;

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

public function notifier($text, $users)
{
foreach ($users as $user)
{
$notification=new Notification();
$notification->setDate(new \DateTime());
$notification->setText($text);
$notification->setStatus('1');
$notification->setUser($user);
$this->em->persist($notification);
}
$this->em->flush();
}
}

这就是我在 bundle 中的 service.yml 中定义服务的方式:

services
notificateur:
class: OC\UserBundle\Services\Notificateur
arguments: [ @doctrine.orm.entity_manager ]

这是我 Controller 中的操作(这仅用于测试,用于通知当前用户:

public function notifAction() {

$user=$this->getUser();
$notificateur=$this->get('notificateur');
$notificateur->notifier('your account is updated',$user);
Return new Response('OK');
}

当我执行 app/console debug:container 时,我可以在那里看到我的服务,但没有任何内容保存到数据库中。我不知道我错过了什么,如果你能帮助我,我将不胜感激。

最佳答案

在 notifAction 中,您从 $this->getUser(); 传递单个用户;

$notificateur->notifier('your account is updated',$user);

在您的服务中,您正在遍历一组用户,而不是单个用户。如果你只想做一个用户,这会起作用:

public function notifier($text, $user) {

$notification=new Notification();
$notification->setDate(new \DateTime());
$notification->setText($text);
$notification->setStatus('1');
$notification->setUser($user);
$this->em->persist($notification);
$this->em->flush();
}

关于php - 在服务中注入(inject) Doctrine 实体管理器以实现快速通知服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31665885/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com