例如:当A表 type为1 时,userid对应的是 B表的数据,当type 为2 时,userid 对应的是C表的数据。
$list = DB::table('A表 as m')
->leftJoin('B表 AS u', function ($query) use ($wechat_id) {
$query->on('u.wechat_user_id', '=', 'm.userid')
->where('u.id', ">", 0)
->where('m.type', "=", 1)
->where('u.company_wechat_id', "=", $wechat_id);
})
->leftJoin('C表 AS c', function ($query) use ($wechat_id) {
$query->on('c.external_userid', '=', 'm.userid')
->where('c.id', ">", 0)
->where('m.type', "=", 2)
->where('c.company_wechat_id', "=", $wechat_id);
})
->where('m.group_id', $params['group_id'])
->where('m.is_delete', 0)
->select(['m.id', 'm.userid', "m.type", 'm.join_time', "m.join_scene", 'm.userid', 'c.wechat_name',
'u.name', 'm.role', 'c.avatar as c_avatar', 'u.avatar as avatar'])
->orderBy('m.role', 'desc')
->get()
->toArray();