selectRaw 换成 leftJoin

START
鹿和sa0ChunLuyu 2 years ago
parent 6ca2ceb64e
commit 2898c3395f

@ -8,7 +8,9 @@ use App\Models\Admin;
use App\Models\AdminAccount; use App\Models\AdminAccount;
use App\Models\AdminToken; use App\Models\AdminToken;
use App\Models\Config; use App\Models\Config;
use Illuminate\Database\Query\JoinClause;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Yo; use Yo;
use Login; use Login;
use Illuminate\Support\Str; use Illuminate\Support\Str;
@ -52,9 +54,21 @@ class AdminController extends Controller
$admin_account->secret = bcrypt($request->post('password')); $admin_account->secret = bcrypt($request->post('password'));
$admin_account->type = 1; $admin_account->type = 1;
$admin_account->save(); $admin_account->save();
$admin_info = Admin::select(['id', 'nickname', 'avatar', 'status', 'admin_auth_group', 'initial_password']) $admin_info = Admin::select([
->selectRaw("IFNULL((select account from admin_accounts where admin_accounts.admin = admins.id and type = 1),'') as account") DB::raw('admins.id as id'),
->selectRaw("IFNULL((select name from admin_auth_groups where admin_auth_groups.id = admins.admin_auth_group),'') as admin_auth_group_name") DB::raw('admins.nickname as nickname'),
DB::raw('admins.avatar as avatar'),
DB::raw('admins.status as status'),
DB::raw('admins.admin_auth_group as admin_auth_group'),
DB::raw('admins.initial_password as initial_password'),
DB::raw('admin_accounts.account as account'),
DB::raw('admin_auth_groups.name as admin_auth_group_name')
])
->leftJoin('admin_accounts', function (JoinClause $join) {
$join->on('admin_accounts.admin', '=', 'admins.id')
->where('admin_accounts.type', '=', 1);
})
->leftJoin('admin_auth_groups', 'admin_auth_groups.id', '=', 'admins.admin_auth_group')
->where('id', $admin->id)->first(); ->where('id', $admin->id)->first();
return Yo::echo([ return Yo::echo([
'info' => $admin_info 'info' => $admin_info
@ -82,10 +96,22 @@ class AdminController extends Controller
$admin_account->account = $request->post('account'); $admin_account->account = $request->post('account');
$admin_account->save(); $admin_account->save();
} }
$admin_info = Admin::select(['id', 'nickname', 'avatar', 'status', 'admin_auth_group', 'initial_password']) $admin_info = Admin::select([
->selectRaw("IFNULL((select account from admin_accounts where admin_accounts.admin = admins.id and type = 1),'') as account") DB::raw('admins.id as id'),
->selectRaw("IFNULL((select name from admin_auth_groups where admin_auth_groups.id = admins.admin_auth_group),'') as admin_auth_group_name") DB::raw('admins.nickname as nickname'),
->where('id', $admin->id)->first(); DB::raw('admins.avatar as avatar'),
DB::raw('admins.status as status'),
DB::raw('admins.admin_auth_group as admin_auth_group'),
DB::raw('admins.initial_password as initial_password'),
DB::raw('admin_accounts.account as account'),
DB::raw('admin_auth_groups.name as admin_auth_group_name')
])
->leftJoin('admin_accounts', function (JoinClause $join) {
$join->on('admin_accounts.admin', '=', 'admins.id')
->where('admin_accounts.type', '=', 1);
})
->leftJoin('admin_auth_groups', 'admin_auth_groups.id', '=', 'admins.admin_auth_group')
->where('admins.id', $admin->id)->first();
return Yo::echo([ return Yo::echo([
'info' => $admin_info 'info' => $admin_info
]); ]);
@ -113,22 +139,34 @@ class AdminController extends Controller
$search = $request->post('search'); $search = $request->post('search');
$admin_auth_group = $request->post('admin_auth_group'); $admin_auth_group = $request->post('admin_auth_group');
$initial_password = $request->post('initial_password'); $initial_password = $request->post('initial_password');
$admin_list = Admin::select(['id', 'nickname', 'avatar', 'status', 'admin_auth_group', 'initial_password']) $admin_list = Admin::select([
->selectRaw("IFNULL((select account from admin_accounts where admin_accounts.admin = admins.id and type = 1),'') as account") DB::raw('admins.id as id'),
->selectRaw("IFNULL((select name from admin_auth_groups where admin_auth_groups.id = admins.admin_auth_group),'') as admin_auth_group_name") DB::raw('admins.nickname as nickname'),
DB::raw('admins.avatar as avatar'),
DB::raw('admins.status as status'),
DB::raw('admins.admin_auth_group as admin_auth_group'),
DB::raw('admins.initial_password as initial_password'),
DB::raw('admin_accounts.account as account'),
DB::raw('admin_auth_groups.name as admin_auth_group_name')
])
->leftJoin('admin_accounts', function (JoinClause $join) {
$join->on('admin_accounts.admin', '=', 'admins.id')
->where('admin_accounts.type', '=', 1);
})
->leftJoin('admin_auth_groups', 'admin_auth_groups.id', '=', 'admins.admin_auth_group')
->where(function ($query) use ($status) { ->where(function ($query) use ($status) {
if ($status != 0) $query->where('status', $status); if ($status != 0) $query->where('admins.status', $status);
}) })
->where(function ($query) use ($admin_auth_group) { ->where(function ($query) use ($admin_auth_group) {
if ($admin_auth_group != 0) $query->where('admin_auth_group', $admin_auth_group); if ($admin_auth_group != 0) $query->where('admins.admin_auth_group', $admin_auth_group);
}) })
->where(function ($query) use ($initial_password) { ->where(function ($query) use ($initial_password) {
if ($initial_password != 0) $query->where('initial_password', $initial_password); if ($initial_password != 0) $query->where('admins.initial_password', $initial_password);
}) })
->where(function ($query) use ($search) { ->where(function ($query) use ($search) {
if ($search != '') $query->where('nickname', 'like', "%$search%"); if ($search != '') $query->where('admins.nickname', 'like', "%$search%");
}) })
->where('del', 2) ->where('admins.del', 2)
->paginate(20); ->paginate(20);
return Yo::echo([ return Yo::echo([
'list' => $admin_list 'list' => $admin_list

Loading…
Cancel
Save