symfony 2按复选框ID获取行

时间:2013-08-09 10:59:47

标签: sql symfony checkbox symfony-2.1

我的复选框有问题。我正在向控制器发送已选中复选框的列表,这些列表是来自数据库的值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都在数据库中。

1 个答案:

答案 0 :(得分: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();