Метод репозитория Symfony3 не работает - PullRequest
0 голосов
/ 07 июня 2018

Я пытаюсь вызвать метод в репозитории ArticleRepository из моего контроллера ArticleController.Однако он говорит:

Undefined method 'afficheArticle'. The method name must start with either findBy or findOneBy!

Моя статья сущности: (Entity \ 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 (Контроллер \ ArticleController)

 /**
     * @Route("viewArticle2", name="viewArticle2")
     */
    public function listAction2()
    {

        $data = $this->getDoctrine()->getRepository('gkeepBundle:Article')->afficheArticle();

myArticleRepository

    <?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;
    }
}

, если кто-то может мне помочь, пожалуйста!Я уверен, что это глупая ошибка: /

1 Ответ

0 голосов
/ 07 июня 2018

Значение repositoryClass в вашей аннотации сопоставления должно быть пространством имен + именем класса вашего репозитория, похоже, что вы, возможно, также добавили некоторую структуру каталогов.- на самом деле не является допустимым символом в пространстве имен PHP, поэтому значение, которое вы сейчас получаете, определенно неверно.

Попробуйте

@ORM\Entity(repositoryClass="gkeepBundle\Repository\ArticleRepository")

Для справки: когда этонедопустимое имя класса, Doctrine возвращается к репозиторию по умолчанию - это то, что выдает ошибку, которую вы видите.

...