0

我对复选框有疑问。我正在将选中的复选框列表发送到控制器,这些复选框是来自数据库的值 id,它正在工作(数组看起来像Array ( [0] => 26 [1] => 27 [2] => 28 [3] => 29))。但是当我想使用数组中的这些值来搜索行时,例如

    $em = $this->getDoctrine()->getManager();
    $request = $this->get('request');
    $boxes=$request->request->get('checked');

    foreach($boxes as $key=> $value)
    {
        $query=$em->getRepository('AcmeStoreBundle:PrivateMessage')->findById($value);
        $query->setRecipientDelete(true);
        $em->flush();
    }`

我有错误

在非对象上调用成员函数 setRecipientDelete()

有谁知道我做错了什么?我 100% 确定我发送的所有 ID 都在数据库中。

4

1 回答 1

0

findById很可能会返回一个集合。试试findOneById

此外,您可能希望$em->persist($query);在冲洗之前对您的对象进行处理。

$repo = $em->getRepository('AcmeStoreBundle:PrivateMessage');

foreach($boxes as $key => $value)
{
    $message = $repo->findOneById($value);
    $message->setRecipientDelete(true);
    $em->persist($message);
}

$em->flush();
于 2013-08-09T12:13:33.553 回答