2017-01-04 4 views
1

У меня проблема с DQL Symfony 2, я хочу установить первое значение в моем выборе. Значение логическое, но я не могу этого сделать. это мой код:DQL Symfony 2, Set boolean value

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, col 51: Ошибка: Ожидаемая идентификацияVariable | Скалярное выражение | Агрегатное выражение | FunctionDeclaration | PartialObjectExpression | "(" Subselect ")" | CaseExpression, получил «true» –

ответ

0

попробовать с

1 as value 

вместо

true as value 

Вероятно, вы должны вложить в "характер

Кроме того, Вы должны использовать addOrderBy вместо OrderBy следующим образом.:

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

Вместо:

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

Надеется, что это помощь

+0

ваш sugestion работает, но я получаю данные типа, это строка не логическая. Мне нужно boolean –

+0

hi @RachmatChang с нашими без '' '? – Matteo

+0

Я просто пытаюсь использовать '', а не использовать '', и результат по-прежнему остается String @Matteo –

1

Доктрина использует свои собственные псевдонимы. Вы не можете использовать «как» здесь.

$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. Затем удалите select с вашего DQL.

+0

, пожалуйста, дайте мне пример –

+0

public function getFoo() {return true;} –