Symfony 和 Doctrine - 显示来自数据库的数据

Posted

技术标签:

【中文标题】Symfony 和 Doctrine - 显示来自数据库的数据【英文标题】:Symfony and Doctrine - displaying data from database 【发布时间】:2013-10-27 01:32:29 【问题描述】:

我正在尝试显示数据库中的数据。

这是我的路线:

pages:
    pattern: /pages/id
    defaults:
       _controller: DprocMainBundle:Index:show

这是该路线的方法:

public function showAction($id)
    
        $page = $this->getDoctrine()
           ->getRepository('DprocMainBundle:Pages')
           ->find($id);

        if (!$page) 
           throw $this->createNotFoundException('No product found for id '.$id);
        
        return $this->render('DprocMainBundle:Dproc:single.html.twig',array('pages' => $page));
    

print_r($page) 显示:

Dproc\MainBundle\Entity\Pages Object
(
    [Id:protected] => 1
    [page_title:protected] => A Foo Bar
    [page_content:protected] => Test content for page
    [page_category:protected] => 3dsmax
)

在 single.html.twig 中我试图显示该信息:

% for page in pages %
     page.page_title 
% endfor %

什么都没显示,我做错了什么?

【问题讨论】:

可以迭代单个结果吗?为什么不 pages.page_title 没有'for'? 当然,但是 - DprocMainBundle:Dproc:single.html.twig 中不存在对象“Dproc\MainBundle\Entity\Pages”的方法“page_title” 我是通过 getter 方法完成的 page.getPageTitle 【参考方案1】:

尝试不使用 for 循环。因为你已经从数据库中发布数据,你可以试试这个:

 pages.page_title 

【讨论】:

【参考方案2】:

您使用了两个不同的实体.. 一个在 getRepository('DprocMainBundle:Pages') 中,另一个在 render('DprocMainBundle:Dproc:single.html.twig',array('pages' => $page)) 中。您应该在那里放置相同的实体,即 DprocMainBundle:Pages 。我希望你成功。

【讨论】:

【参考方案3】:

find() 方法只会返回一个结果,而不是数组。如果你做了findBy(array('id'=>$id)),那么你会得到一个返回一个结果的数组。或者,您可以不循环遍历您的模板,因为当您只有一个结果时没有必要。只需将变量名称更改为 page 并使用 page.page_title

【讨论】:

变量名称是 pages,当我尝试 pages.page_title 时,它显示对象“Dproc\MainBundle\Entity\Pages”的方法“page_title”在 DprocMainBundle:Dproc:single 中不存在.html.twig 当我尝试 page.page_title 它告诉页面变量不存在 我是通过 getter 方法完成的 page.getPageTitle 如果您的Page 实体中有getPageTitle() 方法,您可以在树枝模板中调用 page.pageTitle 。这适用于每个 get() 函数。 您可能需要显示您的 Pages 实体中的一些代码。标题变量可能只是称为标题吗?

以上是关于Symfony 和 Doctrine - 显示来自数据库的数据的主要内容,如果未能解决你的问题,请参考以下文章

Symfony 5,Doctrine queryBuilder OneToMany 关系

Symfony Doctrine sfDoctrinePager 和 LIMIT

使用 Doctrine 和 Symfony2 查询多对多关系

Symfony 5 和 Doctrine,找不到使用 3 个相关实体获取结果的方法

无法在 Symfony 4.1 项目中安装 Doctrine Migrations V2

在 Symfony2 中使用 Doctrine 映射异常错误