子エンティティuser_has_client
と親エンティティclient
の間に多対1の関係があります。ここで結合クエリから親エンティティを取得する
はuser_has_client
テーブルです:
MariaDB [extrapack]> desc user_has_client;
+-----------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+------------------+------+-----+---------+-------+
| user_id | int(10) unsigned | NO | PRI | NULL | |
| client_id | int(10) unsigned | NO | PRI | NULL | |
+-----------+------------------+------+-----+---------+-------+
私はuser_has_client
子エンティティのuser_id
を含むクエリからclient
親エンティティのリストを返すようにしたいと思います。
私が最初にこれを試してみました:
$query = $this->getEntityManager()->createQueryBuilder()
->select('c')
->from('Application\Entity\UserHasClient', 'uc')
->innerJoin('uc.client', 'c')
->where('uc.user_id = :user_id')
->setMaxResults(10)
;
$query->setParameters(array('user_id' => $user_id));
それは私に次のエラーました:
[Semantical Error] line 0, col -1 near 'SELECT c
': Error: Cannot select entity through identification variables without choosing at least one root entity alias.
をしてから、この1試してみました:
$query = $this->getEntityManager()->createQuery(
"SELECT c.client_id
FROM Application\Entity\UserHasClient u
INNER JOIN u.client c
WHERE u.user_id = {$user_id}");
をそして、それは私に同じを与えましたエラー:
Semantical Error] line 0, col -1 near 'SELECT c FROM': Error: Cannot select entity through identification variables without choosing at least one root entity alias.
は関係の双方向のですか?言い換えれば、クライアントは関係の逆の側を保持していますか? – Wilt
私はそうではないと思ったが、実際はそうだった。 – Stephane