Как использовать GROUP_CONCAT в laravel

101
9

$assignment = assignment::find(Crypt::decrypt($id));
$assignment_details = $assignment->raw_plan()->groupBy('flag')->get();

Я хочу получить результат этого запроса в laravel


SELECT GROUP_CONCAT(name) AS 'names' FROM `raw_plans` where `assignment_id` = 1 GROUP BY`flag`

Пожалуйста, предложите мне использовать GROUP_CONCAT в laravel

спросил(а) 2016-11-08T14:55:00+03:00 3 года, 8 месяцев назад
1
Решение
141

Вы можете использовать отношения в качестве построителя запросов для получения результатов как:


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

ответил(а) 2016-11-08T16:54:00+03:00 3 года, 8 месяцев назад
95

shoieb несколько прав, но вы должны указывать имя таблицы перед доступом к именам столбцов в DB:raw()


Вы должны попробовать следующее:

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

Надеюсь, что это поможет.

ответил(а) 2016-11-08T16:23:00+03:00 3 года, 8 месяцев назад
67

Попробуйте использовать код ниже


$data = DB::table('raw_plans')
->select(DB::raw("GROUP_CONCAT(name SEPARATOR '-') as `names`"))
->groupBy('flag')
->where('assignement_id',1)
->get();

ответил(а) 2016-11-08T15:03:00+03:00 3 года, 8 месяцев назад
39

Попробуйте это


$sql = "SELECT GROUP_CONCAT(name) AS 'names' FROM `raw_plans` where  `assignment_id` = 1 GROUP BY`flag`";

$info = DB::select(DB::raw($sql));

ответил(а) 2016-11-08T16:03:00+03:00 3 года, 8 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема