在mysql中返回数组选择

时间:2016-07-06 19:43:10

标签: php mysql arrays laravel

我正在尝试按模型和制造商名称对库存结果进行分组,显示匹配的项目数量和每个分组的1个结果。话虽如此,我想尝试检索组内的所有库存ID。想知道这是否可行......有什么想法吗?

仅供参考 - 我正在使用Laravel,有问题的行是 - > selectRaw(CambridgeID为CambridgeIDArray)

$getMatchingInventory = DB::table('inventory')
                                ->selectRaw('*, count(*) as groupTotal')
                                ->whereRaw("MATCH(ManufacturerNameMatch, SubCategoryNameMatch, MainCategoryNameMatch, Model_Name, Title_Override, Description_Old) AGAINST ('$final' IN BOOLEAN MODE)")
                                ->selectRaw('CambridgeID as CambridgeIDArray')
                                ->groupBy('Model_Name', 'ManufacturerNameMatch')
                                ->having('Units_OnHand', '>=', '1')
                                ->orderBy('ManufacturerNameMatch')
                                //->paginate(15);
                                ->get();

2 个答案:

答案 0 :(得分:2)

试试这个

$getMatchingInventory = DB::table('inventory')
                            ->select(DB::raw("GROUP_CONCAT(CambridgeID) as `CambridgeIDArray`, count(*) as `groupTotal`"))
                            ->whereRaw("MATCH(ManufacturerNameMatch, SubCategoryNameMatch, MainCategoryNameMatch, Model_Name, Title_Override, Description_Old) AGAINST ('$final' IN BOOLEAN MODE)")
                            ->groupBy('Model_Name', 'ManufacturerNameMatch')
                            ->having('Units_OnHand', '>=', '1')
                            ->orderBy('ManufacturerNameMatch') 
                            ->get();

答案 1 :(得分:1)

您应该能够使用GROUP_CONCAT,请参阅:http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html#function_group-concat

您可以使用指定输出格式选项(例如,SEPARATOR)并根据需要在GROUP_CONCAT内使用其他字符串操作。

(Fyi,使用原始MySQL,至少在这个问题上,会更容易解析。)