我正在尝试创建一个下拉列表,其中的产品按类别划分,因此我不能像往常一样使用列表,因为我必须在下拉列表中列出元素。我做了什么:
$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
值,然后它将数组返回给字符串转换错误。
答案 0 :(得分:2)
只需将数组的新值添加到id的键值。
foreach ($products as $product)
{
if (!isset($category[$product->namecat]))
{
$category[$product->namecat] = [];
}
$category[$product->namecat][$product->id] = $product->nameprod;
}