db->getQueryBuilder(); $qb->select('id', 'propertyvalue') ->from('properties') ->where($qb->expr()->eq('valuetype', $qb->createNamedParameter('3', IQueryBuilder::PARAM_INT), IQueryBuilder::PARAM_INT)); $result = $qb->executeQuery(); // find broken object properties $brokenIds = []; while ($entry = $result->fetch()) { if (!empty($entry['propertyvalue'])) { $object = @unserialize(str_replace('\x00', chr(0), $entry['propertyvalue'])); if ($object === false) { $brokenIds[] = $entry['id']; } } else { $brokenIds[] = $entry['id']; } } $result->closeCursor(); // delete broken object properties $qb = $this->db->getQueryBuilder(); $qb->delete('properties') ->where($qb->expr()->in('id', $qb->createParameter('ids'), IQueryBuilder::PARAM_STR_ARRAY)); foreach (array_chunk($brokenIds, 1000) as $chunkIds) { $qb->setParameter('ids', $chunkIds, IQueryBuilder::PARAM_STR_ARRAY); $qb->executeStatement(); } $total = count($brokenIds); $output->info("$total broken object properties removed"); } }