手动编写DQL

时间:2015-04-27 02:32:29

标签: php symfony doctrine doctrine-1.2

我正在Doctrine Documentation中尝试此部分,您可以:

手动编写DQL

对于SQL SQL,我们没有忘记你。您可以选择手动编写DQL查询并将其解析为Doctrine_Query实例,或者只执行它们。

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

或者你可以使用Doctrine_Query的query()方法执行它们。

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

然而,由于遇到以下错误,我遇到了困难:

  

尝试从命名空间“AppBundle \ Controller”加载类“Doctrine_Query”。   您是否忘记了另一个命名空间的“use”语句?

你能帮帮我吗?

<?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));
    }

1 个答案:

答案 0 :(得分:1)

这是 this section in the manual 的一部分,而非 Doctrine 1.2 。在最新版本中,您只需使用createQuery() Doctrine 2.5 中创建查询。

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

或者,您可以写 Doctrine Query Language