foreach和查询显示laravel

时间:2014-03-27 23:10:55

标签: foreach laravel laravel-4

我有一个带连接的表,并且分组,所以我在表中有多个项目,如:

namecat   nameprod
1         a
1         b
1         c
2         a
2         a
2         c

我想在选择下拉菜单中显示,因为是我在$ products变量中的查询的结果,我将它传递给了我的视图

return View::make('admin.view')->with('products',$products);

然后在我的admin.view

@foreach ($products as $product)


{{Form::select('categorie', array(

$product-namecat => array($product->nameprod => $product-nomeprod)))
}}
@endforeach
像这样,我只是为每个类别获得了很多下拉。如何使用带有namecat的粗体标题的下拉菜单,例如(1)然后是所有产品1.如laravel docs中那样:

Generating A Grouped List

echo Form::select('animal', array(
    'Cats' => array('leopard' => 'Leopard'),
    'Dogs' => array('spaniel' => 'Spaniel'),
));

我尝试使用2个foreach:

   @foreach ($products as $product)
@foreach ($product->namecat as $category)


    {{Form::select('categorie', array(

    $category => array($product->nameprod => $product-nomeprod)))
    }}
    @endforeach
 @endforeach

但是它说试图获取非对象的属性(BTW我看到有人在foreach中使用这种构建但是我没办法$ product-> namecat在foreach中工作它说无效为foreach()提供的参数为什么?)

实际上我(以正常的编程方式)记住了这样的事情:

    echo Form::select('animal', array(
foreach ($product->nomecat as $cat)
        $cat => array( foreach ($product->nameprod as $prod)
                               $prod => $prod
                       endforeach),

     endforeach));

1 个答案:

答案 0 :(得分:0)

我假设您的 $ products 数组看起来像

$products = [ (object) ['namecat' => 1, 'nameprod' => 'a'], (object) ['namecat' => 1, 'nameprod' => 'b'], (object) ['namecat' => 2, 'nameprod' => 'a'], (object) ['namecat' => 2, 'nameprod' => 'b'], // ... ]

要使 $ products 数组生效的分组列表,您需要进行一些调整。一种简单的方法是将新的变量 $ categories 带入游戏中,例如,您可以填写控制器。

$categories = []; foreach ($products as $product) { if (!isset($categories[$product->namecat])) { $categories[$product->namecat] = []; } array_push($categories[$product->namecat], $product->nameprod); } View::make('leView')->with('categories' => $categories);

视图中的

因为$ categories看起来像这样: $categories[1] => ['a', 'b'] $categories[2] => ['a', 'b']

你应该可以使用Form::select {{ Form::select('category', $categories) }}