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