Я использую Symfony2, я должен использовать Doctrine QueryBuilder ( http://docs.doctrine-project.org/en/latest/reference/query-builder.html ). В документации нет примера для инструкции delete или update.
Моя сущность:
object(stdClass)[417] public '__CLASS__' => string 'Les\DataBundle\Entity\News' (length=26) public 'id' => int 1 public 'restoId' => int 1 public 'category' => string 'dessert' (length=7) public 'text' => string 'jlkdjsalkdj sa' (length=14) public 'dateCreated' => string 'DateTime' (length=8) public 'dateModified' => null
Я пытаюсь удалить строку в базе данных, но я продолжаю получать ошибку:
[Semantical Error] line 0, col 7 near 'News WHERE n.id': Error: Class 'News' is not defined.
Мой запрос:
$newsID =2 ; $qd = $repository->createQueryBuilder('n'); $qd->delete('n') ->where('n.id = :id') ->setParameter('id',$newsID); $query = $qd->getQuery(); $result = $query->getResult();
-$newsID =2 ; $qd = $repository->createQueryBuilder('n'); $qd->delete('n') ->where('n.id = :id') ->setParameter('id',$newsID); $query = $qd->getQuery(); $result = $query->getResult();
И будет ли инструкция обновления иметь одинаковую структуру?
Для инструкции delete отличается от select, вы не указываете имя столбца для удаления в отличие от select.
Исправленный код
$qd = $repository->createQueryBuilder('n'); $qd->delete() ->where('n.id = :id') ->setParameter('id',$newsID); $query = $qd->getQuery(); $result = $query->getResult();
-$qd = $repository->createQueryBuilder('n'); $qd->delete() ->where('n.id = :id') ->setParameter('id',$newsID); $query = $qd->getQuery(); $result = $query->getResult();
Другой формат
$query = $this->getDoctrine()->getManager()->createQuery('delete FROM LesDataBundle:News n where n.id = '.$newsID); $result = $query->getResult();
Для Заявления об обновлении это:
$qd = $repository->createQueryBuilder('n'); $qd->delete() $qd->update() ->set('n.text' , ':text') ->where('n.id = :id') ->setParameters( array('id'=> $newsID, 'text' => 'Hello World') ); $query = $qd->getQuery(); $result = $query->getResult();
-$qd = $repository->createQueryBuilder('n'); $qd->delete() $qd->update() ->set('n.text' , ':text') ->where('n.id = :id') ->setParameters( array('id'=> $newsID, 'text' => 'Hello World') ); $query = $qd->getQuery(); $result = $query->getResult();
-$qd = $repository->createQueryBuilder('n'); $qd->delete() $qd->update() ->set('n.text' , ':text') ->where('n.id = :id') ->setParameters( array('id'=> $newsID, 'text' => 'Hello World') ); $query = $qd->getQuery(); $result = $query->getResult();