php - 如何在由客户分隔符分隔的单个列中一起显示两个组连接列

标签 php mysql sql laravel eloquent

下面是显示表格的 Controller 函数

$rec = DB::table('recipe_list')
    ->select('recipe_list.recipe_id', 'recipe_list.Recipe_name',
        'recipe_list.Recipe_desc', 'recipe_list.Recipe_duration',
        DB::raw('group_concat(distinct ing_list.Ing_name separator ",") as recipe_ingredients'),
        DB::raw('group_concat(distinct recipe_inglist.quantity  separator ",") as ingredients_amount'),
        'recipe_cusine.Cusine_name', 'recipe_type.Recipe_type_name', 'recipe_list.image',
        DB::raw(' count(distinct likerecipes.id) as likes'))
    ->join('recipe_inglist', 'recipe_list.recipe_id', '=', 'recipe_inglist.Recipe_id')
    ->join('ing_list', 'recipe_inglist.Ing_id', '=', 'ing_list.ing_id')
    ->join('recipe_cusine', 'recipe_list.Recipe_cusine_id', '=', 'recipe_cusine.cusine_id')
    ->join('recipe_type', 'recipe_list.Recipe_type_id', '=', 'recipe_type.Recipe_typeID')
    ->join('likerecipes', 'recipe_list.recipe_id', '=', 'likerecipes.recipe_id')
    ->where('recipe_list.recipe_id', '>=', '1')
    ->groupBy('recipe_list.recipe_id', 'recipe_list.recipe_name', 'recipe_list.recipe_desc', 'recipe_list.recipe_duration', 'recipe_cusine.Cusine_name', 'recipe_type.Recipe_type_name', 'recipe_list.image')->get();

表格输出是 Recipes Table

但是我想要的输出是这样的:

|Recipe_id|Name|Description|Cusine|Type |Ingredient        |
|   1     |blah|blahblahbla| bla  | bla | 20 gm of garlic,
                                        | 500 gm of chicken,
                                        | 30 gm of onion,

这是我的 recipe_inglist 表 recipe_inglist

最佳答案

我建议你使用 php 代码,

像这样,

你有$rec数据,然后执行下面的代码,

foreach ($rec as $k => &$v) {
    $names  = explode(",", $v->recipe_ingredients);
    $amount = explode(",", $v->ingredients_amount);
    $temp   = [];
    foreach ($names as $key => $value) {
        $temp[] = $amount[$key] . ' of ' . $value;
    }
    if ($temp) {
        $v->ingredient = implode(",", $temp);
    }

}

我在哪里创建 ingradient 字段,例如20 克大蒜、500 克鸡肉、30 克洋葱作为值(value)。

关于php - 如何在由客户分隔符分隔的单个列中一起显示两个组连接列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43586391/

相关文章:

javascript - PHP 通过电子邮件将选定的变量发送给用户

php - MySql -- 如何记录使用过的条目?

php - 具有事件记录的 Codeigniter MySQL AES?

php - 按数组值链接的动态类方法调用

mysql - 对于按另一列分组的给定条件,如何获取两列的计数?

android - 在MySQL中插入序列号时出错

php - 在 SQL 表中查找具有特定部分值列的行

mysql - 如何在准备好的 SQL 语句中将 [] slice 也传递给非 IN 条件的 IN 条件?

sql - SQL Developer中的 "DELETE TABLE"和 "DELETE FROM"有什么区别?

sql - 如何避免分页计数和数据检索的多次查询?