Как написать ниже запрос в красноречивой форме.Eloquent выглядит хорошо с отношением 2 таблицы, но с отношением 4 table и group_concat не работает должным образом.Приведенный ниже код работает нормально, просто нужно знать, как я могу получить приведенный ниже код в красноречивом формате.
Отношение выглядит так
Таблицы> Столбцы:
mrs> id, name
mr_regions> id, mrs_id (таблица mrs), region_id (таблица регионов)
регионов> id, имя, headquaters_id (таблица headquaters)
headquaters> id, name
DB::table('mrs as m')
->select(
'm.id',
'first_name',
'last_name',
'email',
'designation',
'mobile_number',
DB::raw('GROUP_CONCAT(DISTINCT r.name SEPARATOR ", ") AS regions'),
DB::raw('GROUP_CONCAT(DISTINCT h.name SEPARATOR ", ") AS headquaters')
)
->join('mr_regions AS mr', function($join){
$join->on('mr.mrs_id', '=', 'm.id');
$join->on('mr.is_active', '=', DB::raw(Config('constants.STATUS_ACTIVE')));
})
->join('regions AS r', function($join){
$join->on('r.id', '=', 'mr.mrs_id');
$join->on('mr.is_active', '=', DB::raw(Config('constants.STATUS_ACTIVE')));
})
->join('headquaters AS h', function($join){
$join->on('h.id', '=', 'r.headquaters_id');
$join->on('h.is_active', '=', DB::raw(Config('constants.STATUS_ACTIVE')));
})
->where(function($where) use ($id){
$where->where('m.is_active', Config('constants.STATUS_ACTIVE'));
$where->where('m.id', '=', $id);
})
->groupby('m.id')
->first();