在 Symfony 中传递数据数组

Passing array of data in Symfony

我在数据库中有我的通知 table,我正在其中设置用户的所有阅读通知。

目前,此函数仅接收一个 id,但是,应该有一个选项可以将 id 数组传递到那里,以便同时将多个 id 标记为已读。我需要扩展这个函数,以便它处理 $this>data['id'] 是 array.

的情况

我该如何解决?

我的代码:

public function readNotification(User $user, $notificationId)      
{                                                                  

   $notification = $this->getNotificationRepository()->findOneBy([
       'user' => $user,                                           
       'id' => $notificationId                                    
   ]);  

   if($notification) {                                            
       $notification->setRead(new \DateTime());                   
       $this->em->flush();                                        
   }                                                              
}  

我的控制器:

$this->requirePostParams(['id']);
    $this->get('app.service')->readNotification(
        $this->data['user'],
        $this->data['id']
    );

    return $this->success();

在现实生活中,获取所有通知并使用 flush 保存每个通知是一种非常糟糕的方法。假设您的情况应该更新 1K 或更多通知。这将导致 1K 更新查询。我建议您创建一个独特的 UPDATE 查询并在单个查询中更新所有相关项目:

UPDATE `tableName` SET `read` = NOW() WHERE id IN (id1, id2, ....)

id1, id2 ... 是您要更新的 ID 列表。

在您的函数中,您可以执行以下操作:

public function readNotification(User $user, $notificationIds)
{
    if (!is_array($notificationIds)) {
        $notificationIds = [$notificationIds];
    }

    // other code

}