簡體   English   中英

Symfony3存儲庫方法不起作用

[英]Symfony3 repository method doesn't work

我試圖從我的控制器ArticleController調用存儲庫ArticleRepository中的方法。 但是它說:

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

如果有人可以幫助我! 我很確定這是一個愚蠢的錯誤:/

映射批注中的repositoryClass的值必須是repositoryClass的名稱空間+類名,看起來您可能還添加了一些目錄結構。 -實際上在PHP名稱空間中不是有效字符,因此您現在獲得的值肯定是不正確的。

嘗試

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

供參考:當該類名無效時,Doctrine會退回到默認存儲庫-這就是拋出您所看到的錯誤的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM