如何在雄辩的关系中添加2个中间表

时间:2019-04-11 11:42:12

标签: php mysql laravel eloquent laravel-5.8

如何以雄辩的形式在下面的查询中编写内容。雄辩的使用2表关系似乎不错,但是使用4表关系和group_concat则不能正常工作。下面的代码工作正常,只需要知道如何以雄辩的格式实现下面的代码即可。

关系像这样
表格>列:
夫人> ID,姓名
mr_regions> id,mrs_id(mrs表),regions_id(regions表)
地区> id,名称,headquaters_id(headquaters表)
总部> id,名称

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

0 个答案:

没有答案