我有一棵树的例子。
| Brands |-- SuperTees |-- Stickypicky |-- Mugland |-- Bookmania
字符串我可以在“品牌”中按子类别获取所有产品,但无法按“品牌”获取所有产品。请帮助创建查询
6kkfgxo01#
我自己解决了这个问题,但我不确定什么是正确的。我超控控制器和仓库。这是我的控制器。
use Symfony\Component\HttpFoundation\Request; use Sylius\Bundle\CoreBundle\Controller\ProductController as BaseProductController; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Sylius\Component\Taxonomy\Model\Taxon; class ProductController extends BaseProductController { public function indexByTaxonomyAction(Request $request, $permalink) { /** @var Taxon $taxon */ $taxon = $this->get('sylius.repository.taxon') ->findOneByPermalink($permalink); if (!isset($taxon)) { throw new NotFoundHttpException('Requested taxon does not exist.'); } $ids = array($taxon->getId()); /** @var Taxon $child */ foreach ($taxon->getChildren() as $child) { array_push($ids, $child->getId()); } $paginator = $this ->getRepository() ->createByTaxonsPaginator($ids); $paginator->setMaxPerPage($this->config->getPaginationMaxPerPage()); $paginator->setCurrentPage($request->query->get('page', 1)); return $this->render( $this->config->getTemplate('indexByTaxonomy.html'), array( 'taxon' => $taxon, 'products' => $paginator, ) ); } }
字符串它是我的存储库
use Sylius\Bundle\CoreBundle\Doctrine\ORM\ProductRepository as BaseProductRepository; class ProductRepository extends BaseProductRepository { public function createByTaxonsPaginator(array $ids) { $queryBuilder = $this->getCollectionQueryBuilder(); $queryBuilder ->innerJoin('product.taxons', 'taxon') ->andWhere('taxon.id IN ( :ids )') ->setParameter('ids', $ids) ; return $this->getPaginator($queryBuilder); } }
型
p8ekf7hl2#
如果您是出于显示/序列化的目的而使用产品,您可以呈现一个内部请求以重用现有的ProductController操作。https://docs.sylius.com/en/1.12/cookbook/shop/embedding-products.html
ProductController
2条答案
按热度按时间6kkfgxo01#
我自己解决了这个问题,但我不确定什么是正确的。我超控控制器和仓库。这是我的控制器。
字符串
它是我的存储库
型
p8ekf7hl2#
如果您是出于显示/序列化的目的而使用产品,您可以呈现一个内部请求以重用现有的
ProductController
操作。https://docs.sylius.com/en/1.12/cookbook/shop/embedding-products.html