pri*_*ime 10 symfony doctrine-orm
我正在关注Symfony2教程(第4章),但是我无法getLatestBlogs从自定义存储库中检索该方法.
我在Linux Mint上使用Symfony 2.2和Phar.
我自己创建了存储库,但我很难过.我收到此错误:
未定义的方法'getLatestBlogs'.方法名称必须以findBy或findOneBy开头! - BadMethodCallException
我搜索了其他类似的问题,但无济于事.任何人都可以在我的代码中发现错误吗?
附加信息
我的composer.json内容如下:
"require": {
"php": ">=5.3.3",
"symfony/symfony": "2.2.0", ** NOTE : Originally read 2.2.* but I changed and successfully ran a composer update **
"doctrine/orm": ">=2.2.3,<2.4-dev",
"doctrine/doctrine-bundle": "1.2.*",
"twig/extensions": "1.0.*",
"symfony/assetic-bundle": "2.1.*",
"symfony/swiftmailer-bundle": "2.2.*",
"symfony/monolog-bundle": "2.2.*",
"sensio/distribution-bundle": "2.2.*",
"sensio/framework-extra-bundle": "2.2.*",
"sensio/generator-bundle": "2.2.*",
"jms/security-extra-bundle": "1.4.*",
"jms/di-extra-bundle": "1.3.*",
"doctrine/doctrine-fixtures-bundle": "dev-master",
"doctrine/data-fixtures" : "dev-master"
},
Run Code Online (Sandbox Code Playgroud)
我的src/Blogger/BlogBundle/Controller/PageController.php:
namespace Blogger\BlogBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Blogger\BlogBundle\Entity\Enquiry;
use Blogger\BlogBundle\Form\EnquiryType;
class PageController extends Controller
{
public function indexAction()
{
$em = $this->getDoctrine()
->getManager();
$blogs = $em->getRepository('BloggerBlogBundle:Blog')->getLatestBlogs();
return $this->render('BloggerBlogBundle:Page:index.html.twig', array(
'blogs' => $blogs
));
}
Run Code Online (Sandbox Code Playgroud)
最初的谎言和我src/Blogger/BlogBundle/Entity/Blog.php:
namespace Blogger\BlogBundle\Entity;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Table(name="blog")
* @ORM\Entity(repositoryClass="Blogger\BlogBundle\Repository\BlogRepository")
* @ORM\HasLifecycleCallbacks()
*/
class Blog
{
Run Code Online (Sandbox Code Playgroud)
最后我的src/Blogger/BlogBundle/Repository/BlogRepository.php:
namespace Blogger\BlogBundle\Repository;
use Doctrine\ORM\EntityRepository;
/**
* BlogRepository
*
* This class was generated by the Doctrine ORM. Add your own custom
* repository methods below.
*/
class BlogRepository extends EntityRepository
{
public function getLatestBlogs($limit = null)
{
$qb = $this->createQueryBuilder('b')
->select('b')
->addOrderBy('b.created', 'DESC');
if (false === is_null($limit))
$qb->setMaxResults($limit);
return $qb->getQuery()
->getResult();
}
}
Run Code Online (Sandbox Code Playgroud)
Bra*_*sen 21
您可以检查以下内容以解决此问题:
确保注释中的FQCN与存储库文件的类名相匹配,并且已设置正确的命名空间.
如果您具有此活动或暂时禁用Doctrine缓存,请清除所有元数据缓存.
app/console doctrine:cache:clear-metadata
检查annotation您的配置中是否设置了映射类型.即如果你必须在yml文件中yml定义你repositoryClass的.
| 归档时间: |
|
| 查看次数: |
10764 次 |
| 最近记录: |