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
。
我对 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
。