多くのユーザーは多くの項目を持つことができます。しかし、私は特定のユーザーが所有する特定のアイテムのリストを取得したい。Symfony:多対多で子のwhere節
ユーザエンティティ:
class User
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* Many Users have many items
* @ORM\ManyToMany(targetEntity="AppBundle\Entity\Item", fetch="EAGER")
* @ORM\JoinTable(name="users_items",
* joinColumns={@ORM\JoinColumn(name="user_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="item_id", referencedColumnName="id")}
* )
*/
private $items;
}
アイテムのエンティティ:
class Item
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="name", type="string", length=10)
*/
private $name;
}
Doctrineはその後、作成した3つのテーブル:私は取得したい
items
users
users_items
は、私は2つのエンティティを持っていますすべてのite ms name
d "ペンシル"が所有していますuserId
11.
どうすればいいですか?
ありがとうございます。 (構文は多分完璧ではありません)私は、この作品を確認していない
$items= $em->getDoctrine->createQueryBuilder()
->select('[items]')
->from(User::class, 'users')
->join('users.items', 'items')
->where('users.id = :userId')
->setParameter('userId', $theId)
->getQuery()
->getResult();
が、理論的にはそれは、あなたの場合の問題点は、所有側のみが知っていることである必要があります。