如何laravel使用GROUP_CONCAT在laravel
$assignment = assignment::find(Crypt::decrypt($id));
$assignment_details = $assignment->raw_plan()->groupBy('flag')->get();
我想把这个查询的结果如下如何laravel使用GROUP_CONCAT在laravel
SELECT GROUP_CONCAT(name) AS 'names' FROM `raw_plans` where `assignment_id` = 1 GROUP BY`flag`
请建议我如何使用GROUP_CONCAT在laravel
您可以使用关系作为查询构建器以获取结果:
$assignment_details = $assignment->raw_plan()
->select(DB::raw('group_concat(name) as names'))
->where('assignment_id', 1)
->groupBy('flag')
->get();
更新
使用table_name.*
的选择让所有的字段。
$assignment_details = $assignment->raw_plan()
->select('raw_plans.*', DB::raw('group_concat(name) as names'))
->where('assignment_id', 1)
->groupBy('flag')
->get();
尝试用下面的代码
$data = DB::table('raw_plans')
->select(DB::raw("GROUP_CONCAT(name SEPARATOR '-') as `names`"))
->groupBy('flag')
->where('assignement_id',1)
->get();
收到以下错误: 调用未定义功能应用\ HTTP \控制器\ GROUP_CONCAT() –
你能分享你的控制器代码? – shoieb0101
$ assignment = assignment :: find(Crypt :: decrypt($ id)); $ assignment_details = $ assignment-> raw_plan() - > groupBy('flag') - > get(); 我想在raw_plans.flag中使用GROUP_CONCAT –
试试这个
$sql = "SELECT GROUP_CONCAT(name) AS 'names' FROM `raw_plans` where `assignment_id` = 1 GROUP BY`flag`";
$info = DB::select(DB::raw($sql));
shoieb是有点权,但在DB:raw()
访问列名您应该尝试在这之前,你应该给表名:
$data = DB::table('raw_plans')
->select(DB::raw("group_concat(raw_plans.name)"))
->groupBy('flag')
->where('assignement_id',1)
->get();
希望这有助于。
'table' name只有在加入时才需要,并且有多个'tables'具有相同的'列名',我猜 – shoieb0101
但它只显示$ assignment ['names' ]。无法看到其他字段。 –
检查更新后的答案。它也会显示其他字段。 –