gpt4 book ai didi

symfony - 方法名称必须以 findBy 或 findOneBy 开头! (未捕获的异常)

转载 作者:行者123 更新时间:2023-12-04 08:50:32 25 4
gpt4 key购买 nike

我已经查过了 this但我的错误似乎有所不同。

我收到此错误:

[2012-05-07 14:09:59] request.CRITICAL: BadMethodCallException: Undefined method 'findOperariosordenados'. The method name must start with either findBy or findOneBy! (uncaught exception) at /Users/gitek/www/uda/vendor/doctrine/lib/Doctrine/ORM/EntityRepository.php line 201 [] []

这是我的 OperarioRepository:
<?php

namespace Gitek\UdaBundle\Entity;

use Doctrine\ORM\EntityRepository;

/**
* OperarioRepository
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
class OperarioRepository extends EntityRepository
{
public function findOperariosordenados()
{
$em = $this->getEntityManager();
$consulta = $em->createQuery('SELECT o FROM GitekUdaBundle:Operario o
ORDER BY o.apellidos, o.nombre');

return $consulta->getResult();
}
}

这是我的 Controller ,我在其中调用存储库:
$em = $this->getDoctrine()->getEntityManager();
$operarios = $em->getRepository('GitekUdaBundle:Operario')->findOperariosordenados();

最后,这是我的实体:
<?php

namespace Gitek\UdaBundle\Entity;

use Doctrine\ORM\Mapping as ORM;

/**
* Gitek\UdaBundle\Entity\Operario
*
* @ORM\Table(name="Operario")
* @ORM\Entity(repositoryClass="Gitek\UdaBundle\Entity\OperarioRepository")
*/
class Operario
{
/**
* @var integer $id
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;

/**
* @var string $nombre
*
* @ORM\Column(name="nombre", type="string", length=255)
*/
private $nombre;
----
----

任何帮助或线索?

提前致谢

编辑:在开发环境中工作正常,但在生产环境中没有。

最佳答案

您已在存储库中,无需重新获取。

*Repository 中的所有方法都可以像 $this 一样使用

另外,请注意

  • 当一个简单的 return $this->findBy(); 时,查询生成器或手工查询的工作量太大了可以使用。
  • findBy()有三个参数,第一个是关系和getter的数组,第二个是排序,见Doctrine\ORM\EntityRepository代码
  • 而不是使用原始查询...首先尝试查询生成器。看看我的样本。

  • 您的密码

    我建议你简单地做:
    public function findOperariosordenados()
    {
    $collection = $this->findBy( array(), array('apellidos','nombre') );
    return $collection;
    }

    您只需要 EntityRepository
    我的存储库之一:

    注意事项:
  • Order有一个关系为$owner使用 User实体
  • 如果你真的需要一个数组,在 $array = $reposiroty->getOneUnhandledContainerCreate(Query::HYDRATE_ARRAY)
  • ContainerCreateOrderOrder 的扩展在 @ORM\InheritanceType("SINGLE_TABLE") .虽然完全超出了这个问题的范围。

  • 它可能会有所帮助:
     <?php

    namespace Client\PortalBundle\Entity\Repository;


    # Internal
    use Doctrine\ORM\EntityRepository;
    use Doctrine\ORM\QueryBuilder;
    use Doctrine\ORM\Query;
    use Doctrine\Common\Collections\ArrayCollection;


    # Specific


    # Domain objects


    # Entities
    use Client\PortalBundle\Entity\User;


    # Exceptions



    /**
    * Order Repository
    *
    *
    * Where to create queries to get details
    * when starting by this Entity to get info from.
    *
    * Possible relationship bridges:
    * - User $owner Who required the task
    */
    class OrderRepository extends EntityRepository
    {

    private function _findUnhandledOrderQuery($limit = null)
    {
    $q = $this->createQueryBuilder("o")
    ->select('o,u')
    ->leftJoin('o.owner', 'u')
    ->orderBy('o.created', 'DESC')
    ->where('o.status = :status')
    ->setParameter('status',
    OrderStatusFlagValues::CREATED
    )
    ;

    if (is_numeric($limit))
    {
    $q->setMaxResults($limit);
    }
    #die(var_dump( $q->getDQL() ) );
    #die(var_dump( $this->_entityName ) );
    return $q;
    }


    /**
    * Get all orders and attached status specific to an User
    *
    * Returns the full Order object with the
    * attached relationship with the User entity
    * who created it.
    */
    public function findAllByOwner(User $owner)
    {
    return $this->findBy( array('owner'=>$owner->getId()), array('created'=>'DESC') );
    }



    /**
    * Get all orders and attached status specific to an User
    *
    * Returns the full Order object with the
    * attached relationship with the User entity
    * who created it.
    */
    public function findAll()
    {
    return $this->findBy( array(), array('created'=>'DESC') );
    }



    /**
    * Get next unhandled order
    *
    * @return array|null $order
    */
    public function getOneUnhandledContainerCreate($hydrate = null)
    {
    return $this->_findUnhandledOrderQuery(1)
    ->orderBy('o.created', 'ASC')
    ->getQuery()
    ->getOneOrNullResult($hydrate);
    }



    /**
    * Get All Unhandled Container Create
    */
    public function getAllUnhandledContainerCreate($hydrate = null)
    {
    return $this->_findUnhandledOrderQuery()
    ->orderBy('o.created', 'ASC')
    ->getQuery()
    ->getResult($hydrate);
    }
    }

    关于symfony - 方法名称必须以 findBy 或 findOneBy 开头! (未捕获的异常),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10481916/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com