2017-04-24 1 views
1

Folgen ist die Controller-Funktion der TabelleWie zwei Gruppe anzuzeigen concat'ed Spalten in einer einzigen Spalte von einem customed seperator getrennt

$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(); 

die Tabellenausgabe ist Recipes Table

Aber anzuzeigen was ich will, ist der Ausgang zu sein wie:

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

das ist mein recipe_inglist Tisch ist recipe_inglist

Antwort

0

ich Sie mit PHP-Code zu gehen empfehlen,

Wie diese Weise

Sie haben $rec Daten, dann tun Code unten,

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); 
    } 

} 

Wo ich ingradient Feld bin die Schaffung der werde zB haben 20 gm of garlic,500 gm of chicken,30 gm of onion als Wert.

+0

Ich habe die Idee, was Sie versuchen zu tun, aber ich verstehe nicht, wo oder wie Sie diesen Code verwenden. Ich bin wirklich neu in Laravel. –

+0

Sie erhalten $ rec Datensätze von Abfrage, direkt darunter. schreibe obigen Code, und einmal dd Datensätze zu überkreuzen – rahulsm

+0

ich war in der Lage, den Wert von Temp mit vardump zu bekommen. und die Ausgabe war "Array (3) {[0] => String (17)" 500 g Huhn "[1] => String (14)" 30 g Zwiebel [2] => String (15) " 20 g Knoblauch "}" so seine Arbeit. aber ich habe nicht die Idee, wie ich es zusammen mit dem Namen des Rezepts auf dem Tisch anzeigen kann. –

Verwandte Themen