DQL Symfony 2,设置布尔值

DQL Symfony 2, Set boolean value

我对 DQL Symfony 2 有疑问,我想在 select 中设置第一个值。该值为布尔值,但我不能这样做。这是我的代码:

    public function findAllMenuListForMenuGroup(){
    $query = $this->getEntityManager()
        ->createQueryBuilder()
        ->select('a.id, a.lft, a.lvl, a.rgt, a.name, a.title, true as value, a.description')
        ->from(Menu::class,'a')
        ->orderBy('a.root, a.lft','ASC')
        ->getQuery();
    return $query->getArrayResult();
}

这段代码是错误的,但我不知道问题所在,看代码"true as value",我觉得有问题,谁能帮我?

错误是:

[Syntax Error] line 0, col 51: Error: Expected IdentificationVariable | ScalarExpression | AggregateExpression | FunctionDeclaration | PartialObjectExpression | "(" Subselect ")" | CaseExpression, got 'true'

    /**
 * @ORM\Id()
 * @ORM\Column(name="id", type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @ORM\ManyToMany(targetEntity="Menu", inversedBy="menuGroup")
 * @ORM\JoinTable(name="administration_menu_group_details")
 */
private $menu;

/**
 * @ORM\OneToMany(targetEntity="User", mappedBy="menuGroup")
 */
private $user;

/**
 * @var string
 *
 * @ORM\Column(name="name", type="string", length=255, unique=true)
 */
private $name;

/**
 * @var string
 *
 * @ORM\Column(name="description", type="string", length=1000)
 */
private $description;

Doctrine 使用它自己的别名。你不能在这里使用 "as"。

    $query = $this->getEntityManager()
        ->createQueryBuilder()
        ->select('a.id, a.lft, a.lvl, a.rgt, a.name, a.title, a.true, a.description')
        ->from(Menu::class,'a')
        ->orderBy('a.root,'ASC')
        ->orderBy('a.lft,'ASC')
        ->getQuery();
    return $query->getArrayResult();

试试

1 as value 

而不是

true as value

可能你必须用 " 字符括起来。

此外,您需要使用 addOrderBy 而不是 orderBy,如下所示:

    ->addOrderBy('a.root','ASC')
    ->addOrderBy('a.lft','ASC')

而不是:

    ->orderBy('a.root, a.lft','ASC')

希望对您有所帮助

不要在 DQL 中这样做。 向始终返回 true 的对象添加一个方法。然后从您的 DQL 中删除 select