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() を呼び出す

私が間違っていることを誰かが考えていますか?私が送信しているすべての ID がデータベースにあることは 100% 確信しています。

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 に答える