Symfony EINS-ZU-EINS-relation
Ich bin neu auf symfony2 und Schwierigkeiten haben, zu tun, einen left join zwischen 2 Personen. Ich erhalte folgende Fehlermeldung und weiß nicht, wie dieses problem zu lösen:
[Semantische Fehler] Zeile 0, col 69 in der Nähe von 'ich': Fehler: Klasse
Bundle\Entity\Benutzer hat kein Verein namens user_id
Entität Benutzer:
class Users
{
/**
* @ORM\Id
* @ORM\Column(name="user_id", type="string", length="16")
* @ORM\OneToOne(targetEntity="UsersInformation", mappedBy="Users")
*/
protected $user_id;
/**
* @ORM\Column(type="string", length="255")
*/
protected $username;
/**
* @ORM\Column(type="string", length="32")
*/
protected $password;
...
/**
* Set user_id
*
* @param string $userId
*/
public function setUserId($userId)
{
$this->user_id = $userId;
}
/**
* Get user_id
*
* @return string
*/
public function getUserId()
{
return $this->user_id;
}
...
}
Person UsersInformation:
class UsersInformation
{
/**
* @ORM\Id
* @ORM\Column(type="string", length="16")
* @ORM\OneToOne(targetEntity="Users", inversedBy="UsersInformation")
* @ORM\JoinColumn(name="user_id", referencedColumnName="user_id")
*/
protected $user_id;
/**
* @ORM\Column(type="string", length="255")
*/
public $email;
/**
* @ORM\Column(type="string", length="1")
*/
public $gender;
/**
* @ORM\Column(type="string", length="255")
*/
public $company;
....
}
Den UsersRepository sieht wie folgt aus:
public function getAllUsers($limit = null)
{
$qb = $this->createQueryBuilder('u')
->select('u, i')
->leftJoin('u.user_id', 'i');
if (false === is_null($limit))
$qb->setMaxResults($limit);
return $qb->getQuery()
->getResult();
}
Was ich falsch mache?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich denke, der querybuilder richtig aussieht. Ihr problem ist wahrscheinlich in der Daten Struktur.
Die Art und Weise, die Sie normalerweise diesen Ansatz ist, durch die Einrichtung einer Eigenschaft pro Bezug. Für Ihre
Users
- Klasse, würde es Sinn machen, eineinformation
oderuserInformation
zum Beispiel.Vielleicht so etwas hilft?