2015-04-27 5 views
4

Я пытаюсь эту часть в Doctrine Documentation, где вы можете:вручную писать DQL


вручную писать DQL

Для вас SQL баффов, мы не забыли о вас. Вы можете дополнительно записать свои DQL-запросы вручную и проанализировать их на экземпляр Doctrine_Query или просто выполнить их.

$dql = "FROM User u, u.Phonenumbers p"; 
$q = Doctrine_Query::create()->parseQuery($dql); 

Или вы можете просто выполнить их с помощью метода query() Doctrine_Query.

$dql = "FROM User u, u.Phonenumbers p"; 
$q = Doctrine_Query::create()->query($dql); 

Но у меня возникают трудности, так как я столкнулся следующее сообщение об ошибке:

Attempted to load class "Doctrine_Query" from namespace "AppBundle\Controller". Did you forget a "use" statement for another namespace?

Не могли бы вы помочь мне с этим?

<?php 

namespace AppBundle\Controller; 

use Symfony\Component\HttpFoundation\Response; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; 
use AppBundle\Entity\TblProduct; 

class DefaultController extends Controller 
{ 
    /** 
    * @Route("/", name="homepage") 
    */ 
    public function indexAction() 
    { 
     $products = "SELECT * FROM TblProduct"; 
     $q = Doctrine_Query::create()->query($products); 

     if (!$products) { 
      throw $this->createNotFoundException(
       'No products registered yet.' 
      ); 
     } 
     return $this->render('default/index.html.twig', array('products' => $products)); 
    } 
+2

это доктрина 1 –

+0

Ahh, так что это уже не часть Doctrine2? Я просто пытался это сделать. Я все еще новичок в Symfony. :) – User122113

+0

прочитайте этот ответ: http://stackoverflow.com/a/9945711/1055200 –

ответ

1

Это часть Doctrine 1.2 и не Doctrine 2.5. В последней версии вы просто создадите запросы в Doctrine Query Language с createQuery().

<?php 
$dql = "FROM User u, u.Phonenumbers p"; 
$query = $em->createQuery($dql); 
$users = $query->getResult(); 

В качестве альтернативы вы можете написать Native SQL.