Symfony2使用Doctrine结果填充对象

时间:2015-08-06 10:30:55

标签: php symfony doctrine-orm

我正在研究Symfony2 API,只是为了学习东西。我想要实现的是:

从DB加载模板这是有效的。 现在我正在尝试从浏览器中的数据库输出检索到的模板,这就是我正在努力的地方。

所以我的Doctrine正在工作并重新复制模板,我还创建了TemplateResponse,我想用Doctrine array key =>填充每个construc变量。值。

TemplateResponse文件:

<?php

namespace Boltmail\UserBundle\BoltmailResponse;

class TemplateResponse {

    /**
     * @var integer
     */
    public $templates;

    /**
     * @param $templates
     */
    public function __construct(
        $templates
    ){
        $this->templates = $templates;
    }
}

TemplateListFactory:

<?php

namespace Boltmail\UserBundle\BoltmailFactory;

use Boltmail\UserBundle\BoltmailRepository\TemplateListRepository;
use Boltmail\UserBundle\BoltmailResponse\TemplateResponse;
use Boltmail\UserBundle\BoltmailResponse\Response;
use Symfony\Component\HttpFoundation\Request;

class TemplateListFactory {

    public $template;

    public function __construct(
        TemplateListRepository $templateListRepository
    ){
        $this->template = $templateListRepository;
    }

    public function build()
    {
        $template = $this->template->searchTemplate();

        if ($template) {
            return new TemplateResponse (
                $template
            );
        } else {
            return new Response(
                false,
                'Something went wrong'
            );
        }
    }
}

错误:

Notice: Trying to get property of non-object

if ($template) {
    return new TemplateResponse (
        $template->temp_id,
        $template->title,
        $template->content,
        $template->author

所以我相信Doctrine会将数据作为一个数组返回,我想我正在尝试访问它的值,好像它们是对象,这就是我收到此错误的原因。

我还尝试在填充TemplateReponse之前在if语句中使用foreach循环,但这也没有用。我知道如何才能做到这一点。

好的,我做了一些改动,得到了我追求的结果:

结果:

{
  templates: [
   {
      temp_id: "0",
      title: "New Template",
      content: "I am new template blehhhhhh",
      author: "Michael"
   },
   {
      temp_id: "1",
      title: "Liverpool Template",
      content: "You Will Never Walk Alone",
      author: "Bob"
   }
 ]
}

1 个答案:

答案 0 :(得分:3)

您正在尝试实现Symfony中已存在的内容:它被称为Doctrine ORM