【问题标题】:symfony2 method undefined in EntityRepositoryEntityRepository 中未定义的 symfony2 方法
【发布时间】:2017-03-29 16:33:57
【问题描述】:

我想从我的 EntityRepository 创建一个请求,所以这是我的代码:

<?php

namespace zhr\myprojectBundle\Entity;

use Doctrine\ORM\EntityRepository;

/**
 * myprojectdbEntityRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class myprojectdbEntityRepository extends EntityRepository
{
    public function getAll()
    {
        $qb = $this->createQueryBuilder('s');

        $query = $qb;

        $result = $qb->getQuery()->execute();

    }
}

我想在我的控制器文件中使用它,所以这是我的代码:

公共函数 searchusersAction(Request $request) {

    $em = $this->getDoctrine()->getManager();
    $repository = $em->getRepository('myprojectBundle:User');


    $utilisateur = $repository->getAll();

   var_dump($utilisateur); die();

    //return $this->render('mypageBundle:Admin:adminindex.html.twig', array('sheet'=>$utilisateur));

}

我得到一个错误:

未定义的方法“getAll”。方法名称必须以 findBy 或 findOneBy 开头!

???通常存储库文件中的所有方法都必须在我的控制器文件中定义吗?

先谢谢大家

【问题讨论】:

  • 您是否在您的实体中设置了repositoryClass? symfony.com/doc/current/doctrine/repository.html
  • 我认为错误是不言自明的。方法名应该以 findBy 开头,否则 findOneBy 不获取。而且你没有从 getAll 方法返回任何东西

标签: php symfony


【解决方案1】:

您必须使用getResult() 来返回如下结果:

public function getAll()
{
    return $this->createQueryBuilder('s')->getQuery()->getResult();
}

但是你真的不需要这种函数,因为 EntityRepository 类已经有 findAll() 函数来从实体中获取所有行:

$em = $this->getDoctrine()->getManager();
$rows = $em->getRepository('myprojectBundle:User')->findAll();

我建议您查看 QueryBuilderEntityRepository api 的文档。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-13
    • 1970-01-01
    • 2015-05-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多