Armin Rahmati
2 سال پیش توسط Armin Rahmati مطرح شد
6 پاسخ

جستجو بین کاربران سایت

سلام دوستان.
یه قسمتی از پنل ادمین اطلاعات نویسنده ها رو نمایش میدم و همچنین تو این صفحه میخوام عمل جستجو رو انجام بدم ولی میخوام زمانی که مثلا یه اسمی رو سرچ میکنم و اون کاربر role ش ادمین هست داخل نتایج جستجو نمایش داده نشه که از دستور زیر استفاده کردم:

public function author() {
        $users = User::query()
            ->when($keyword = request('search'), function ($query) use ($keyword) {
                $query->where(DB::raw('concat(firstName, " ", lastName)'), 'LIKE', "%{$keyword}%")
                    ->orWhere('mobile', 'LIKE', "%{$keyword}%")
                    ->orWhere('email', 'LIKE', "%{$keyword}%")
                    ->where('role', 'author');
            });
        $users = $users->where('role', 'author')->latest()->paginate(10);
        return view('Panel.users.admins', compact('users'));
}

ولی وقتی جستجو میکنم کاربرایی که ادمین هستن هم داخل نتایج جستجو نمایش داده میشن.
ممنون میشم راهنمایی کنید.


ثبت پرسش جدید
احسان داوری
تخصص : برنامه نویس
@ehsndvr 2 سال پیش مطرح شد
0

سلام به شما عزیزان
مشکل ایشون به این صورت بر طرف میشد:

$users = User::query()
            ->where('role', 'author')
            ->when($keyword = request('search'), function ($query) use ($keyword) {
                $query->where('fullName', 'LIKE', "%{$keyword}%")
                    ->orWhere('phone', 'LIKE', "%{$keyword}%")
                    ->orWhere('email', 'LIKE', "%{$keyword}%");
            });
        $users = $users->where('role', 'author')->latest()->paginate(10);
        return view('Panel.users.authors', compact('users'));

موفق باشید.


احسان داوری
تخصص : برنامه نویس
@ehsndvr 2 سال پیش مطرح شد
0

سلام
شما میخواید همه کاربران رو به جز ادمین نشون بده پس میتونید بنویسید هرچیزی به جز ادمین، پس بهتره بنویسید :

where("role", "!=" , "admin")

لطفا اینو تست کنید ببینید جواب میده یا نه
اگر جواب نداد بنده رو مخاطب (Mention) بکنید/قرار بدید.


Armin Rahmati
@arminrahmati999 2 سال پیش آپدیت شد
0

@ehsndvr
جواب نداد ولی من نمیخوام همه رو به جز ادمین نشون بدم.
ببینید من سه نوع کاربر دارم:

admin
author
user

حالا تو این قسمت میخوام فقط نویسنده ها داخل نتایج جستجو نمایش داده بشن.


احسان داوری
تخصص : برنامه نویس
@ehsndvr 2 سال پیش مطرح شد
0

@arminrahmati999 لطفا کارهایی رو که تا الان برای حل این مشکل امتحان کردید رو بنویسید. و اینکه شما چرا دوباره این قسمت :

$users = $users->where('role', 'author')->latest()->paginate(10);

میگید بر اساس نقش نویسنده افراد رو پیدا بکنه درصورتی که اون بالا هم دوباره همین رو تعریف کردید ؟


Armin Rahmati
@arminrahmati999 2 سال پیش مطرح شد
0

@ehsndvr
من اگه کدمو به صورت زیر بنویسم، یعنی فقط با نام و نام خانوادگی جستجو کنم به درستی کار میکنه ولی من میخوام جستجو براساس نام و نام خانوادگی، موبایل و ایمیل باشه.

public function author() {
        $users = User::query()
            ->when($keyword = request('search'), function ($query) use ($keyword) {
                $query->where(DB::raw('concat(firstName, " ", lastName)'), 'LIKE', "%{$keyword}%")
                    ->where('role', 'author');
            });
        $users = $users->where('role', 'author')->latest()->paginate(10);
        return view('Panel.users.admins', compact('users'));
}

در مورد سوال دومی که پرسیدن باید بگم که کد زیر :

$users = $users->where('role', 'author')->latest()->paginate(10);

زمانی که عمل جستجو انجام نشده و فقط صفحه مورد نظر فراخوانی میشه، نتایج رو که میشه کاربرایی که role شون نوسینده هست رو نشون میده و اگه عمل جستجو انجام بشه کد زیر میشه:

public function author() {
        $users = User::query()
            ->when($keyword = request('search'), function ($query) use ($keyword) {
                $query->where(DB::raw('concat(firstName, " ", lastName)'), 'LIKE', "%{$keyword}%")
                    ->orWhere('mobile', 'LIKE', "%{$keyword}%")
                    ->orWhere('email', 'LIKE', "%{$keyword}%")
                    ->where('role', 'author');
            });
        return view('Panel.users.admins', compact('users'));
}

احسان داوری
تخصص : برنامه نویس
@ehsndvr 2 سال پیش مطرح شد
0

سلام
کد های where رو به این صورت بنویسید:

where('role', '=','author')

اگر این روش هم جواب نداد، داخل تلگرام به بنده پیام بدید که با AnyDesk به سیستمون وصل بشم و سعی کنم درستش کنم.
آیدی تلگرام : ehsndvr@


احسان داوری
تخصص : برنامه نویس
@ehsndvr 2 سال پیش مطرح شد
0

سلام به شما عزیزان
مشکل ایشون به این صورت بر طرف میشد:

$users = User::query()
            ->where('role', 'author')
            ->when($keyword = request('search'), function ($query) use ($keyword) {
                $query->where('fullName', 'LIKE', "%{$keyword}%")
                    ->orWhere('phone', 'LIKE', "%{$keyword}%")
                    ->orWhere('email', 'LIKE', "%{$keyword}%");
            });
        $users = $users->where('role', 'author')->latest()->paginate(10);
        return view('Panel.users.authors', compact('users'));

موفق باشید.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام