2014-03-27 26 views
0

我用加入表,組,所以我有多個項目在如表:的foreach和查詢顯示laravel

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

我想在選擇下拉菜單中顯示,由於是從一個查詢,我在$產品變量的結果,我在admin.view通過它我的看法

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

然後

@foreach ($products as $product) 


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

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

像這樣,我只是得到了很多下拉式的每個類別。我該如何做一個下拉菜單,標題以粗體顯示,例如namecat (1),然後將所有的產品在1像這樣laravel文檔:

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 

但它說,試圖讓非對象的性質(順便說一句,我看到有人在foreach中使用這種構建,但是我不能在$ foreach中使用$ product-> namecat工作,它說爲foreach()提供的無效參數爲什麼?)

其實我記住一種正常的編程方式)類似於:

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

    endforeach)); 

回答

0

我假設你$產品陣列看起來像

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

與該$產品分組列表陣列工作,你需要一些調整。一個簡單的方法是將一個新的變量$類別納入遊戲中,例如你可以填寫你的控制器。

$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[1] => ['a', 'b'] $categories[2] => ['a', 'b']

,你應該能夠使用Form::select {{ Form::select('category', $categories) }}

+0

謝謝你,但如何可視化它? – user3384514

+0

添加了查看示例 – zwacky

+0

爲什麼我這麼笨 – user3384514