2016-11-08 4 views

答えて

12

あなたはその結果を取得するためにクエリビルダとしての関係を使用することができます。

$assignment_details = $assignment->raw_plan() 
           ->select('raw_plans.*', DB::raw('group_concat(name) as names')) 
           ->where('assignment_id', 1) 
           ->groupBy('flag') 
           ->get(); 
+0

だと思いますが、$ assignment [ ]。他のフィールドは表示されません。 –

+0

更新された回答を確認してください。他のフィールドも表示されます。 –

2

コードの下

$data = DB::table('raw_plans') 
      ->select(DB::raw("GROUP_CONCAT(name SEPARATOR '-') as `names`")) 
      ->groupBy('flag') 
      ->where('assignement_id',1) 
      ->get(); 
で試してみてくださいlaravelにGROUP_CONCATを使用する方法を私に提案して下さい
+0

は、次のエラーを取得:未定義の関数のAppへ コール\のHttp \コントローラ\ GROUP_CONCAT() –

+0

は、あなたがコードをコントローラ共有することができますか? – shoieb0101

+0

$ assignment = assignment :: find(Crypt :: decrypt($ id));$ assignment_details = $ assignment-> raw_plan() - > groupBy( '​​flag') - > get(); raw_plans.flagにGROUP_CONCATを使用したい –

0

お試しください

あなたはこれを試してみてください
5

shoiebはやや右ですが、DB:raw()

内の列名にアクセスする前に、テーブル名を与える必要があります:

$data = DB::table('raw_plans') 
      ->select(DB::raw("group_concat(raw_plans.name)")) 
      ->groupBy('flag') 
      ->where('assignement_id',1) 
      ->get(); 

は、この情報がお役に立てば幸いです。すべてのフィールドを取得するために

$assignment_details = $assignment->raw_plan() 
           ->select(DB::raw('group_concat(name) as names')) 
           ->where('assignment_id', 1) 
           ->groupBy('flag') 
           ->get(); 

更新

選択で使用table_name.*を:

+0

'table'という名前は、あなたが参加していて、同じ' column name'を持つ複数の 'tables'がある場合にのみ必要です。私は – shoieb0101

関連する問題