For Twig中有两个数据库查询的循环

时间:2016-06-18 00:18:25

标签: php laravel eloquent slim twig-extension

如果有人可以提供帮助,我真的很喜欢,我正试图想办法在Twig中循环浏览两个查询。我可以用PHP创建它,但我在Twig上做了同样的事情。这就是我通常在PHP上做的事情:

foreach($items as $item){
   $product_id = $item;
   $products = $app->db->table('products')->where('id', $product_id)->first();
   echo "<li>" . $products->title . "</li>";
}

上面的代码可以正常工作,但在Twig上它不会循环到下一个循环,但它将继续循环相同的东西。 如果你知道如何使用Twig for循环,请使用它,就像我上面使用它一样。我在Slim中使用Laravel Eloquent来查询它。

这就是我所做的:

控制器

$products = $app->db->table('products')->where('trash', '0')->first();

视图

{% for item in items %}
      {% set product_id = item.id %}
       <li> {{ products.title }}</li>
{% endfor %} 

它只会显示第一行并重复相同的内容。

1 个答案:

答案 0 :(得分:1)

不要尝试从模板运行查询。在控制器中执行此操作并将结果传递给模板。

同样$items似乎是一系列ID,因此您应该能够使用where-in条件(而不是多个查询)一次性加载所有产品:

控制器:

$products = $app->db->table('products')->whereIn('id', $items)->get();

// pass $products to the template as "products"

Twig模板:

{% for product in products %}
    <li>{{ product.title }}</li>
{% endfor %}