php - symfony 2 中的自定义存储库类不起作用

标签 php symfony doctrine

我是 symfony 2 的新手,我真的很喜欢它。只是有时我不知道它是在文档中还是我自己。

几个小时以来,我一直在尝试让存储库类工作,并且一直在解决问题和 Doctrine 文档,但这些都对我没有帮助。

所以所有这些链接都没有帮助我

实际上,为了获得正确的结果,我应该做的并不多,但我总是收到一条错误消息:“未定义的方法‘findAllOrderedByName’。方法名称必须以 findBy 或 findOneBy 开头!500 Internal Server错误 - BadMethodCallException”

我认为我的命名空间和/或 use 语句有问题,但我不知道。任何人都可以告诉我我做错了什么,也许还有我应该做些什么来做对吗?我只想让 findAllOrderedByName() 方法正常工作。

这就是我所拥有的:

Symfony/src/Acme/StoreBundle/Entity/Product.php

<?php

namespace Acme\StoreBundle\Entity;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="Acme\StoreBundle\Entity\ProductRepository")
 */
class Product
{ 
    // all the code which was/is working
}

Symfony/src/Acme/StoreBundle/Entity/ProductRepository.php

<?php

namespace Acme\StoreBundle\Entity;
use Doctrine\ORM\EntityRepository;

class ProductRepository extends EntityRepository
{
    public function findAllOrderedByName()
    {
        return $this->getManager()
            ->createQuery(
                'SELECT p FROM AcmeStoreBundle:Product p ORDER BY p.name ASC'
            )
            ->getResult();
    }
}

Symfony/src/Acme/StoreBundle/Controller/DefaultController.php

<?php

namespace Acme\StoreBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Acme\StoreBundle\Entity\Product;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;

class DefaultController extends Controller
{
    public function showAction()
    {
        $em = $this->get('doctrine')->getManager();
        $products = $em->getRepository('AcmeStoreBundle:Product')
            ->findAllOrderedByName();
        return $this->render('AcmeStoreBundle:Default:showAll.html.twig', array('products' => $products));
    }
}

感谢阅读和帮助!

最佳答案

感谢所有提供帮助的人。我想通了,是我自己当然 symfony 没有错,但我所做的更多:

命令后:

 php app/console generate:bundle --namespace=Acme/StoreBundle

我选择了

"Determine the format to use for the generated configuration." --> xml

而不是注释。所以我不得不改变我的

~/Projects/Symfony/src/Acme/StoreBundle/Resources/config/doctrine/Product.orm.xml

文件。 <entity name="Acme\StoreBundle\Entity\Product">

<entity
        name="Acme\StoreBundle\Entity\Product"
        repository-class="Acme\StoreBundle\Entity\ProductRepository">

关于php - symfony 2 中的自定义存储库类不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26274059/

相关文章:

php - 如何使用 Doctrine ORM 在 Symfony 中设置初始数据(不是测试数据)

php - Laravel Api 路由加载失败。 404 未找到

php - 当连接具有可空关系的表时,Doctrine 返回代理对象

php - 元编程到几种输出语言

自定义表单字段 Symfony2 中的 Javascript

php - 无法在 Symfony2 应用程序中使用 Sahi/Mink/Behat 上传文件

Symfony2 phpunit在不同环境下运行测试

php - symfony2 flash 消息作为事件监听器来处理错误

php - foreach 循环用于 bool 模式下的全文搜索

php - 可能被盗的本地网络服务器上的双向加密