我对DQL Symfony 2有问题,我想在我的选择中设置第一个值。值是布尔值,但我不能这样做。这是我的代码:
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();
}
这段代码是错误的,但我不知道问题所在,看看代码"真值",我觉得有问题,有人可以帮助我吗?
错误是:
[语法错误] 第 0 行,列 51:错误:预期的标识变量 |标量表达式 |聚合表达式 |功能声明 | 部分对象表达式 |"("子选择")" |案例表达式,得到 "真"
/**
* @ORMId()
* @ORMColumn(name="id", type="integer")
* @ORMGeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORMManyToMany(targetEntity="Menu", inversedBy="menuGroup")
* @ORMJoinTable(name="administration_menu_group_details")
*/
private $menu;
/**
* @ORMOneToMany(targetEntity="User", mappedBy="menuGroup")
*/
private $user;
/**
* @var string
*
* @ORMColumn(name="name", type="string", length=255, unique=true)
*/
private $name;
/**
* @var string
*
* @ORMColumn(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
。