2017-01-04 53 views
1

我有一个关于DQL Symfony 2的问题,我想在我的选择中设置第一个值。值是布尔值,但我不能这样做。这是我的代码: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(); 
} 

这个代码是错误,但我不知道的问题,看代码“真正的价值”,我觉得有问题,任何人都可以帮我吗?

的错误是:

[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; 
+0

你能发布错误信息吗? – Matteo

+0

您可以只使用orderby方法指定一个字段。可以使用addorderby方法添加另一个 – Matteo

+0

[语法错误]第0行,第51列:错误:Expected IdentificationVariable |标量表达式| AggregateExpression | FunctionDeclaration | PartialObjectExpression | “(”Subselect“)”| CaseExpression,得到'真' –

回答

0

尝试

1 as value 

,而不是

true as value 

也许你必须在“字符包围

此外,您需要使用addOrderBy代替排序依据如下:

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

相反的:

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

希望这有助于

+0

你的消化是有效的,但我得到的类型数据是字符串不是布尔值。我需要一个布尔值 –

+0

您好@RachmatChang与我们没有'''' – Matteo

+0

我只是尝试使用''而不使用'',结果仍然是字符串@Matteo –

1

学说使用它自己的别名。你不能在这里使用“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(); 
+0

仍然错误@eeXBee –

+0

我可以有你的实体吗? – eeXBee

+0

是否属实? – eeXBee

0

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

+0

请给我一个例子 –

+0

public function getFoo(){return true;} –