2015-08-06 2 views
0

Я работаю над API Symfony2, чтобы просто изучить материал. Я пытаюсь достичь этого:Symfony2 населяющий объект с результатами Doctrine

Загрузить шаблоны из базы данных. Теперь я пытаюсь вывести извлеченные шаблоны из моей базы данных в браузере, и именно здесь я боюсь.

Итак, моя Доктрина работает и возвращает шаблоны, я также создал TemplateResponse, где я хочу заполнить каждую переменную construc массивом Doctrine array => value.

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 возвращает данные в виде массива, я думаю, и я пытаюсь получить доступ его значения, как если бы они были объектами, поэтому я получаю эту ошибку.

Я также попытался использовать цикл foreach внутри инструкции If перед заполнением TemplateReponse, но это также не сработало. Любая идея, как я могу сделать эту работу.

ОК Я сделал некоторые изменения, и я получил результат я был после:

Результат:

{ 
    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" 
    } 
] 
} 
+0

Не могли бы вы предоставить реализацию searchTemplate? – DonCallisto

+0

, пожалуйста, проверьте выше изменения. – John

+0

Используйте некоторую функцию ведения журнала для выполнения отладки. Я полагаю, что вы не выполняете правильный запрос, и ваше возвращаемое значение равно null или его форме. Попробуйте использовать get_class (шаблон $ this->); Доктрина BTW поможет вам без повторного изобретательства колеса ... Если вы вызовете метод с нулевым параметром, это должно вызвать исключение – DonCallisto

ответ

3

Вы пытаетесь достичь чего-то, что уже существует внутри Symfony: это называется Doctrine ORM.

+0

. Я согласен. Я почему-то предпочитаю использовать Doctrine DBAL. .... независимо от того, можно ли добиться того, что я пытаюсь ...? – John

+1

Да, это вполне возможно, но зачем переписывать то, что уже существует? ;) Кроме того, даже если вы используете ORM, вы всегда можете получить доступ к базовому соединению DBAL. –

+0

@Tomazi: Просто ради разговора, в чем причины выбора DBAL? – DonCallisto

Смежные вопросы