Ich habe eine Einheit Klasse:Lehre der DQL generiert die Abfrage nicht korrekt
/**
* @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
}
, die perfekt an die DB verbunden ist. Tatsächlich funktioniert diese Steuerung wie erwartet:
/**
* @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;
}
Aber wenn ich versuche, mittels DQL, wie diese Abfrage:
/**
* @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;
}
Was ich erhalte, ist ein Fehler 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...
Durch var_dumping der $query->getResult()
Befehl, was ich habe, ist die folgende Abfrage, die schlecht zitiert aussieht:
SELECT "0_.username AS username0, "0_.email AS email1, "0_.password AS password2 FROM "app_auth"."User" "0_
Hinweis: Ich verwende den Schemaname für meine Entität. Ich kann nicht herausfinden, was mit meinem DQL nicht stimmt. Irgendeine Hilfe? Ich bin mit Symfony 2.8 LTS
Nur eine Idee: sollte nicht der Name der Tabelle in Anmerkung ohne Schema sein? Also anstelle von 'name =" "" app_auth "". "" User "" "' 'name =" User "'? – Miro
Leider ist das eine Problemumgehung für andere Probleme, die Doctrine hat. Auf diese Weise werden der Schemaname und der Name der Groß-/Kleinschreibung korrekt verwaltet. – Bertuz
@Miro Du hast meinen Tag gemacht! Indem Sie die Anführungszeichen aus dem Schemanamen entfernen und sie nur für den Tabellennamen beibehalten, wird die Abfrage korrekt generiert. Möchtest du es beantworten, damit ich es akzeptiere? – Bertuz