我正在尝试从我的控制器ArticleController调用存储库ArticleRepository中的方法。不过它说:
Undefined method 'afficheArticle'. The method name must start with either findBy or findOneBy!
我的实体文章:(实体\ Article.php)
/**
* Article
*
* @ORM\Table(name="Article", indexes={@ORM\Index(name="I_FK_Article_TypeArticle", columns={"idTypeArticle"})})
* @ORM\Entity(repositoryClass="erp-gkeep\new_erp\gkeepBundle\Repository\ArticleRepository")
*/
class Article
{
我的ArticleController(Controller \ ArticleController)
/**
* @Route("viewArticle2", name="viewArticle2")
*/
public function listAction2()
{
$data = $this->getDoctrine()->getRepository('gkeepBundle:Article')->afficheArticle();
我的ArticleRepository
<?php
/**
* Created by PhpStorm.
*/
namespace gkeepBundle\Repository;
use Doctrine\ORM\EntityRepository;
class ArticleRepository extends EntityRepository
{
public function afficheArticle(){
$em=$this->getEntityManager();
$query = $em->createQuery(
'SELECT a.reference, a.designationfr, a.designationen, a.plan, a.url, a.datecreation, a.idtypearticle
FROM gkeepBundle:Article a
'
);
$articles = $query->getArrayResult();
return $articles;
}
}
如果有人可以帮助我请!我很确定这是一个愚蠢的错误:/
答案 0 :(得分:0)
映射注释中repositoryClass
的值必须是存储库的命名空间+类名,看起来您可能也添加了一些目录结构。 -
实际上不是PHP命名空间中的有效字符,因此您现在获得的值肯定是不对的。
尝试
@ORM\Entity(repositoryClass="gkeepBundle\Repository\ArticleRepository")
供参考:当此类名无效时,Doctrine会回退到默认存储库 - 这就是抛出您所看到的错误的原因。