/** * Remove items above the limit on playlist. * * @param Playlist $playlist */ public function removeLeftItems($playlist) { if ($playlist->getMaxItems() != null) { $allowedArticles = $this->em->createQuery('SELECT pa.id FROM Newscoop\\Entity\\PlaylistArticle pa WHERE pa.idPlaylist = :playlistId AND pa.order >= 0 ORDER BY pa.order ASC')->setParameter('playlistId', $playlist->getId())->setMaxResults($playlist->getMaxItems())->getArrayResult(); $ids = array(); foreach ($allowedArticles as $article) { $ids[] = $article['id']; } $this->em->createQuery('DELETE FROM Newscoop\\Entity\\PlaylistArticle pa WHERE pa.id NOT IN (:ids) AND pa.idPlaylist = :playlistId')->setParameter('ids', $ids)->setParameter('playlistId', $playlist->getId())->execute(); } }