2017-12-08 17 views
0

작동하지 슬러그으로 검색 제품 :Sylius, 내가 사용 슬러그하여 제품을 필터링하기 위해 노력하고있어

$this->get('sylius.repository.product')->findOneBy(array('slug' => $slug)); 

내가 findBy 및 findOneBySlug를 사용하여 시도했지만, 항상 제품 "은이 없음을 말한다 슬러그 "속성 :

Unrecognized field: slug 

또는

Entity 'Sylius\Component\Core\Model\Product' has no field 'slug'. You can therefore not call 'findOneBySlug' on the entities' repository 

하지만 자신의 웹 사이트에 대한 설명서는 작동해야한다고 말했습니다 :를 slug 제품의 번역에 사용할 수 있기 때문에 http://docs.sylius.org/en/latest/components_and_bundles/bundles/SyliusProductBundle/product.html

$product = $repository->findOneBy(array('slug' => 'my-super-product')); // Get one product by defined criteria. 

답변

2

나는, 작동하지 않는 것 같아요. 저장소에 사용할 수있는 몇 가지 기본 방법이 있습니다 (예 : findOneByChannelAndSlug 또는 findByName).

/** 
* @param string $name 
* @param string $locale 
* @return array 
*/ 
public function findBySlug(string $slug, string $locale): ?ProductInterface 
{ 
    return $this->createQueryBuilder('o') 
     ->innerJoin('o.translations', 'translation', 'WITH', 'translation.locale = :locale') 
     ->andWhere('translation.slug = :slug') 
     ->setParameter('slug', $slug) 
     ->setParameter('locale', $locale) 
     ->getQuery() 
     ->getOneOrNullResult() 
    ; 
} 
: 제품 저장소를 확장 할 때

또는 사용자가 직접 구성 할 수 있습니다