2014-11-27 6 views
1

Поставщик Doctrine предоставляет службу db. Вот пример использования:Silex и Doctrine mysql: как вернуть результаты от select all

$app->get('/enc/{id}', function ($id) use ($app) { 
    $sql = "SELECT * FROM encuestas WHERE id_enc = ?"; 
    $post = $app['db']->fetchAssoc($sql, array((int) $id)); 

    return "<h1>Encuestas</h1>". 
       "<p>{$post['fec_enc']}</p>". 
       "<p>{$post['opc1']}</p>". 
       "<p>{$post['img1']}</p>". 
       "<p>{$post['vot1']}</p>". 
       "<p>{$post['opc2']}</p>". 
      "<p>{$post['img2']}</p>". 
      "<p>{$post['vot2']}</p>". 
      "<p>{$post['estado']}</p>"; 
}); 

это массив, проблема:

$app->get('/enc', function() use ($app) { 


    $sql = "SELECT * FROM encuestas"; 
    $post = $app['db']->fetchAll($sql); 


    return ...; 

}); 

ответ

4

А что это проблема?

Во второй части кода db возвращает массив связанных массивов. и чтобы показать каждый элемент из него, вы должны использовать какой-то цикл. Обратный пример, который вы указали, на самом деле уродлив. Почему бы вам не использовать какой-либо движок шаблонов (например, ветку)? В любом случае вы должны сделать что-то вроде:

$posts = $app['db']->fetchAll($sql); // posts - NOT post 
foreach($posts as $post) { 
    echo $post['fec_enc']; // or "echo '<p>' . $post['fec_enc'] . '</p>'", 
          // but it's really ugly 
    ... // rest of properties 
} 

Или с помощью прута:

Рендер шаблона прут:

return $app['twig']->render('<template_name>', array('posts' => $posts)); 

В шаблоне веточку:

{% for post in posts %} 
    {{ post.fec_enc }} 
    ... 
{% endfor %} 

Вот больше о Silex шаблоны: http://silex.sensiolabs.org/doc/providers/twig.html

+0

Вы правы, проблем нет. Я просто подумал, что более причудливый способ не использовать «эхо» и ветку. Но, как вы сказали, это уродливо ... Теперь я буду использовать шаблон ветви. – Franj

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