【问题标题】:Doctrine Query Builder not working with CodeIgniterDoctrine Query Builder 不适用于 CodeIgniter
【发布时间】:2013-02-14 00:22:16
【问题描述】:

我的一个控制器的函数中有以下代码:

$qb = $this->doctrine->em->createQueryBuilder();
$query = $qb->select('username, password, level')
    ->from('User', 'u');
        // ->where('user.username = :username')
        // ->setParameter('username', 'userTest');
$users = $query->getResult();

这会导致 something 静默失败。没有错误消息,我从页面得到的唯一信息是 500 服务器错误。如果我注释掉 $users = $query->getResult() 行,页面加载得很好,所以查询生成器似乎在这里不起作用。我不知道为什么。我需要以某种方式将它加载到我的 Doctrine.php 库文件中吗?我不这么认为。

我发现的另一件奇怪的事情是,如果我尝试通过 getRepository 方法检索条目,它会将 DQL 语句打印到页面的输出中,因为该方法本身出于某种原因会打印出 DQL 语句。我不会把它的结果打印出来。

知道这里发生了什么吗?我的用户类非常简单。不幸的是,我不知道出了什么问题,因为没有报告错误。 D:

<?php
namespace Entities;

use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 */
class User {
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue
     */
    private $id;

    /**
     * @ORM\Column(type="string")
     */
    private $username;

    /**
     * @ORM\Column(type="string")
     */
    private $password;

    /**
     * @ORM\Column(type="integer")
     */
    private $level;

    /**
     * @ORM\OneToMany(targetEntity="EmailAddress", mappedBy="user")
     */
    private $emails;
}

?>

【问题讨论】:

    标签: php codeigniter doctrine query-builder


    【解决方案1】:

    你错过了一步!

    doctrine documentation

    试试看:$users = $query-&gt;getQuery()-&gt;getResult();

    然后更改:$qb-&gt;select('u.username, u.password, u.level')

    【讨论】:

    • 我确实看过文档,但我认为这不是正确的代码。不应该是$qb-&gt;getQuery()-&gt;getResult()吗? (这仍然会导致我收到 HTTP 500 服务器错误)此外,尝试您的线路不起作用。当我取消注释 $users = $query-&gt;getQuery()-&gt;getResult(); 时,我仍然收到 HTTP 500 服务器错误。
    • 这与您将$query 分配给$qb 的原因相同。试试:$qb-&gt;select('u.username, u.password, u.level'),如果它有效,我会更新我的答案
    • 行得通!谢谢!我还发现它正在打印 DQL,因为我在 Doctrine 的配置中设置了 EchoSQLLogger。
    猜你喜欢
    • 1970-01-01
    • 2013-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-22
    • 1970-01-01
    • 2014-12-09
    • 1970-01-01
    相关资源
    最近更新 更多