У меня есть лицо класса:доктрины в не генерирует запрос правильно
/**
* @ORM\Entity
* @ORM\Table(name="""app_auth"".""User""", schema="app_auth")
*/
class User {
/**
* @ORM\Column(type="string")
* @ORM\Id
* @ORM\GeneratedValue(strategy="NONE")
*/
private $username;
/**
* @ORM\Column(type="string", nullable=true)
*/
private $email;
/**
* @ORM\Column(type="string", nullable=true)
*/
private $password;
// removed setters and getters
}
который прекрасно привязанный к БД. На самом деле, этот контроллер работает, как ожидалось:
/**
* @Route("users/{username}",
* defaults={
* "_format" = "json"
* })
* @Method("GET")
*/
public function getUserAction($username)
{
$user = $this->getDoctrine()
->getRepository('BelkaTestBundle:User')
->find($username);
if(!$user)
throw $this->createNotFoundException("User $username not found");
$res = new JsonResponse();
$res->setData(array(
'user' => $user->getUsername(),
'email' => $user->getEmail()));
return $res;
}
Но если я пытаюсь запросить с помощью DQL, как это:
/**
* @Route("users/{username}",
* defaults={
* "_format" = "json",
* })
* @Method("GET")
*/
public function getUserAction($username)
{
$repository = $this->getDoctrine()
->getRepository('BelkaTestBundle:User');
$query = $repository->createQueryBuilder('u');
$users = $query->getResult();
/*something here to manage and return the results*/
return $res;
}
Что я получаю сообщение об ошибке Symfony:
An exception occurred while executing 'SELECT "0_.username AS username0, "0_.email AS email1, "0_.password AS password2 FROM "app_auth"."User" "0_':
SQLSTATE[42601]: Syntax error: 7 ERROR: syntax error at or near "0"
LINE 1: SELECT "0_.username AS username0, "0_.email AS email1, "0_.p...
По команде var_dumping $query->getResult()
я получил следующий запрос, который выглядит плохо: цитируется:
SELECT "0_.username AS username0, "0_.email AS email1, "0_.password AS password2 FROM "app_auth"."User" "0_
Уведомление Я использую имя схемы для своего объекта . Я не могу понять, что не так с моим DQL. Любая помощь? Я использую Symfony 2.8 LTS
Просто идея: имя таблицы в аннотации не должно быть без схемы? Поэтому вместо 'name =" "" app_auth "". "" Пользователь "" "" использовать 'name =" User "'? – Miro
К сожалению, это обходное решение для других проблем, связанных с Доктриной. Таким образом, имя схемы и имя таблицы с учетом регистра управляются правильно – Bertuz
@Miro u сделал мой день! Удаляя кавычки из имени схемы и сохраняя их только для имени таблицы, запрос генерируется правильно. Хотелось бы вам ответить на это, чтобы я принял его? – Bertuz