生成下拉分组列表

时间:2014-03-30 14:30:10

标签: php arrays laravel laravel-4

我正在尝试创建一个下拉列表,其中的产品按类别划分,因此我不能像往常一样使用列表,因为我必须在下拉列表中列出元素。我做了什么:

$products= DB::table('prod')                
    ->join('cat','cat.id','=','prod.id_cat')
    ->join('campo_cat','campo_cat.id_cat','=','cat.id')
    ->join('campo','campo.id','=','campo_cat.id_campo')
    ->join('cat_nome','cat_nome.id_cat','=','cat.id')
    ->join('lingua','cat_nome.id_lingua','=','lingua.id')
    ->where('lingua.lingua','=','it-IT')        
    ->groupBy('prod.nome')
    ->select('prod.nome as nameprod','cat_nome.nome as namecat','prod.id as id')->get();

$category = [];
foreach ($products as $product) 
{
    if (!isset($category[$product->namecat])) 
    {
        $category[$product->namecat] = [];
    }
    array_push($category[$product->namecat], $product->nameprod);           
}

然后我把它传递给我的观点:

{{ Form::select('category', array($categorie)) }}

现在我可以看到一个下拉列表,除以我的产品名称的类别,但我的数组键值不是id,而是标准0=> 1=>等。我希望我的下拉值选择对应于产品ID。我尝试了array_combine()我的数组array_values()的id数组,但是它给出了错误,因为每个产品的类别名称都有null值,然后它将数组返回给字符串转换错误。

1 个答案:

答案 0 :(得分:2)

只需将数组的新值添加到id的键值。

foreach ($products as $product) 
{
    if (!isset($category[$product->namecat])) 
    {
        $category[$product->namecat] = [];
    }
    $category[$product->namecat][$product->id] = $product->nameprod;
}