首页 > 解决方案 > 搜索属于当前用户 Laravel 5.7 的记录

问题描述

我只想搜索属于当前用户的记录

这是我的控制器代码:

public function index(Request $request)
    {
        $users = User::all();
        $branches = Branch::all();
        if(Auth::user()->shortsign == '--')
        {

            $deposits = Deposit::query()
                ->where([['client', 'LIKE', "%{$request->search}%"]])
                ->orWhere([['mobile', 'LIKE', "%{$request->search}%"]])
                ->orWhere([['amount', '=', "{$request->search}"]])
                ->orWhere([['id', '=', "{$request->search}"]])
                ->latest()->paginate(5);
            return view('dashboard.deposits.index', array('deposits' => $deposits,
                'branches' => $branches ,'users' => $users));
        }
        else
        {

            $deposits = Deposit::where([['userSign',Auth::user()->shortsign]],function ($q) use ($request){
                return  $q->when($request->search,function ($query) use ($request) {
                    return $query->where([['client', 'LIKE', "%{$request->search}%"]])
                        ->orWhere([['mobile', 'LIKE', "%{$request->search}%"]])
                        ->orWhere([['amount', '=', "{$request->search}"]])
                        ->orWhere([['id', '=', "{$request->search}"]]);
                });

            })->latest()->paginate(5);
            return view('dashboard.deposits.index', array('deposits' => $deposits,
                'branches' => $branches ,'users' => $users));

        }

    }

当我以普通用户身份登录并且搜索没有任何反应时,它会带来所有当前用户行而没有过滤器

标签: laravel

解决方案


取而代之的是,您可以这样做

if(auth()->user()->shortsign == '--') {
    $deposits = Deposit::where('client', 'LIKE', "%$request->search%")
                ->orWhere('mobile', 'LIKE', "%$request->search%")
                ->orWhere('amount', '=', "$request->search%")
                ->orWhere('id', '=', "$request->search%")
                ->latest()->paginate(5);
}
else {
    $deposits = Deposit::where('userSign',Auth::user()->shortsign)->latest()- 
                >paginate(5);
}

在您的视图文件中,您可以 foreach 并使用类似的属性

foreach($deposites as $d) {
         {{ $d->id }} {{ $d->amount }}
 }

它会像用户短符号一样搜索——它将搜索所有用户并为你提供输出,但如果 auth()->user()->shortsign 不是——它将仅获取当前登录用户的结果

让我知道你是否想要这个


推荐阅读