Я пытаюсь создать QueryBuilder с объединением моего продукта сущности и моего магазина сущностей. Я хотел бы отобразить все продукты, связанные с OneStore. Они имеют отношение многие ко многим. Я не могу понять, как получить удостоверения личности. Welp, пожалуйста. Заранее спасибо!
вот скриншот моей таблицы product_store:
https://imgur.com/a/wUZMEEn
Так что, если я достаточно ясен и мой английский законен, вы понимаете, что я 'хотелось бы отображать только товары, связанные с одним идентификатором магазина.
Давайте сделаем пример. Если я нахожусь на странице / store / detail / {1}, я хотел бы отобразить идентификатор продукта 1,3,6,8,10,13, поскольку они связаны с store.id = 1.
Так что я обновил, как мне советовали, но он не работает, и я не понимаю, что не так. Где я ошибаюсь? (контроллер обновлен)
Вот ошибка, которую я получаю: https://imgur.com/a/q3Uun3E
---------------------- моя функция репозитория-----------------------------
public function getProductsForStore($sid)
{
return $this->createQueryBuilder('s')
->join('s.product', 'p')
->addSelect('p')
->andWhere('s.id = :sid')
->orderBy('p.name', 'ASC')
->setParameter('sid', $sid)
->getQuery()
->getResult();
}
$ продут в магазине сущность:
/**
*
* @var ArrayCollection
*
* @ORM\ManyToMany(targetEntity="App\Entity\Product", mappedBy="store")
* * @ORM\JoinTable(name="product_store",
* joinColumns={@ORM\JoinColumn(name="product_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="store_id", referencedColumnName="id")}
* )
*/
private $product;
$ хранить в продукте:
/**
* * @var ArrayCollection
*
* @ORM\ManyToMany(targetEntity="App\Entity\Store", inversedBy="product")
* * @ORM\JoinTable(name="product_store",
* joinColumns={@ORM\JoinColumn(name="store_id", referencedColumnName="id")},
* inverseJoinColumns={@ORM\JoinColumn(name="product_id", referencedColumnName="id")}
* )
*/
private $store;
Функция моего контроллера:
/**
* @Route("stores/detail/{id}", name="detail_store"))
*/
public function getOneStore(StoreRepository $repository, Store $store): Response
{
$store = $repository->findOneBy(array(
'id' => $store->getId(),
));
$products_store = $repository->getProductsForStore(':id');
return $this->render('store.html.twig', array(
'store' => $store,
'product' => $products_store,
));
}