我试图覆盖我自己实体的存储库时感到有点沮丧。
我需要创建一个自定义存储库方法,以特殊方式获取我的实体列表。一个Having
和OrderBy
的查询构建器。
问题是如何设置我的配置来说Sylius,采用我的自定义存储库,而不是默认存储库。
我试试这个:
sylius_resource:
resources:
dinamic.category:
classes:
model: App\Bundle\SyliusBlogBundle\Entity\PostCategory
repository: App\Bundle\SyliusBlogBundle\Repository\PostCategoryRepository
这是我的存储库:
<?php
namespace App\Bundle\SyliusBlogBundle\Repository;
use Doctrine\ORM\EntityRepository;
class PostCategoryRepository extends EntityRepository
{
public function findCategoriesMenu()
{
$queryBuilder = $this->createQueryBuilder('c');
return $queryBuilder
->addSelect('COUNT(p.id) as totalPosts')
->leftJoin('c.posts', 'p')
->andWhere('p.published = true')
->having('totalPosts > 0')
->addGroupBy('p.id')
;
}
}
当我尝试使用此方法时,Symfony会抛出此错误:
在渲染模板期间抛出异常(“未定义方法'findCategoriesMenu'。方法名称必须以findBy或findOneBy开头!”)
答案 0 :(得分:3)
你没有对正确的存储库进行子类化。 ResourceController
期望基于Sylius\Component\Resource\Repository\RepositoryInterface
的存储库。由于你是Doctrine\ORM\EntityRepository
的子类,但事实并非如此。
您的存储库应继承自Sylius\Bundle\ResourceBundle\Doctrine\ORM\EntityRepository
(或自行实现接口)。
答案 1 :(得分:0)
我回复帖子以正确粘贴app/console debug:container dinamic.repository.category
Information for Service "dinamic.repository.category"
=====================================================
------------------ -------------------------------------------------------------------
Option Value
------------------ -------------------------------------------------------------------
Service ID dinamic.repository.category
Class Dinamic\Bundle\SyliusBlogBundle\Repository\PostCategoryRepository
Tags -
Scope container
Public yes
Synthetic no
Lazy no
Synchronized no
Abstract no
Autowired no
Autowiring Types -
------------------ -------------------------------------------------------------------
因为这一切都没问题。
当我尝试访问帖子列表时,会出现此错误:
在渲染模板期间抛出异常(&#34; Catchable Fatal Error:传递给Sylius \ Bundle的参数4 \ ResourceBundle \ Controller \ ResourceController :: __ construct()必须实现接口Sylius \ Component \ Resource \ Repository \ RepositoryInterface,给出Dinamic \ Bundle \ SyliusBlogBundle \ Repository \ PostCategoryRepository的实例,在第2767行的/Applications/XAMPP/xamppfiles/htdocs/rosasinbox-sylius/app/cache/dev/appDevDebugProjectContainer.php中调用并定义&#34;)
如果未设置存储库配置,则会显示主帖的错误。然后我的第一篇文章错了,config.yml
存储库值没有设置。
现在我又设定了一次,我收到了这个错误。