Harsha Mullangi
Harsha Mullangi

Reputation: 564

How to delete a record using query in symfony2

I'm new to symfony2 , i'm stuck in some part in the controller while deleting an object using query builder , help me if i gone wrong somewhere

controller

public function deleteAction(Request $request){
    $tracks = $this->getDoctrine()
    ->getRepository('TcPlayerBundle:TcTracks')
    ->find($request->get('id'))
    /*->delete($id);*/
    ->createQuery('DELETE from TcPlayerBundle:TcTracks t WHERE t.id =:id');


    return $this->render('TcPlayerBundle:Default:all.html.twig',array(
        'tracks' => $tracks
    ));
}

i'm getting an error as

Call to undefined method Tc\PlayerBundle\Entity\TcTracks::createQuery() in /opt/lampp/htdocs/tunecookies/trunk/src/Tc/PlayerBundle/Controller/DefaultController.php line 163

Help me,thanks

Upvotes: 0

Views: 1098

Answers (1)

NHG
NHG

Reputation: 5877

From symfony docs, in your controller action:

$track = $this->getDoctrine()
    ->getRepository('TcPlayerBundle:TcTracks')
    ->findOneById($request->get('id'));
$em = $this->getDoctrine()->getManager();
$em->remove($track);
$em->flush();

Or if you really need, by query builder, like:

$deleteQuery = $this->getDoctrine()
     ->getManager()
     ->createQueryBuilder('d')
     ->delete('TcPlayerBundle:TcTracks', 'd')
     ->where('d.id = ' . $request->get('id'))->getQuery();
$deleted = $deleteQuery->getResult();

Upvotes: 2

Related Questions