findById
will most likely return a collection. try findOneById
.
Further you may want to $em->persist($query);
your object before flushing.
$repo = $em->getRepository('AcmeStoreBundle:PrivateMessage');
foreach($boxes as $key => $value)
{
$message = $repo->findOneById($value);
$message->setRecipientDelete(true);
$em->persist($message);
}
$em->flush();