【问题标题】:Manually writing DQL手动编写 DQL
【发布时间】:2015-04-27 02:32:28
【问题描述】:

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


手动编写 DQL

对于 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”。 您是否忘记了另一个命名空间的“使用”语句?

你能帮我解决这个问题吗?

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

【问题讨论】:

  • 啊,所以它不再是 Doctrine2 的一部分了吗?我只是在尝试这个。我还是 Symfony 的新手。 :)
  • 好的,谢谢@b.b3rn4rd
  • 另外,特定的错误消息是命名空间问题。 $q = \Doctrine_Query...(注意反斜杠)会让你通过它,但不要使用 D1。

标签: php symfony doctrine doctrine-1.2


【解决方案1】:

这是 Doctrine 1.2 的一部分,而不是 Doctrine 2.5。在最新版本中,您只需使用 createQuery()Doctrine Query Language 中创建查询。

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

您也可以写成 Native SQL

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-10-22
    • 1970-01-01
    • 1970-01-01
    • 2021-08-14
    • 2010-11-07
    • 2016-06-26
    • 1970-01-01
    相关资源
    最近更新 更多