راکت

Joins query

3 پاسخ

سلام
من دوتا جدول دارم جدول user و blockuser
با استفاده از یک لیست انتخابی user ها رو انتخاب می کنبم برای مسدود کردن کاربر
زمانی که کاربر مسدود میشه user_id اون کاربرمیره توی جدول blockuser
حال من میخوام زمانی که لیست رو میخوام انتخاب کنم اون کاربری که مسدود شده بود رو نشون نده در واقع کاربر های که مسدود شده نشده اند رو نشون بده
این join query هست که من نوشتم اما عمل نمی کنه همون افرادی که توی لیست بلاک هستند رو دوباره نشون میده

 $user_list = DB::table('users')
            ->join('blockusers', 'users.id', '=', 'blockusers.user_id')
            ->select('users.*')
            ->pluck("name","id");
ثبت پرسش جدید

پاسخ‌ها

3
محمد مهدی کارگر
محمد مهدی کارگر
@unlocker

تخصص: طراح و برنامه نویس

سلام به نظرم می تونید از یک کوئری شبیه این استفاده کنید.

DB::table(..)->select('all users')->whereNotIn('select id from blockusers ')->get();
ناصر رمضانپور
ناصر رمضانپور
@na.rmpr

تخصص: برنامه نویس وب

سلام
می تونی به لینک زیر مراجعه کنی که کامل توضیح داده باید چی کارش کنید
https://laracasts.com/discuss/channels/eloquent/laravel-get-records-from-one-table-that-doesnt-exist-in-another-with-a-where-clause-attached

شاید پاسخ شما همین‌جا باشد

محمدرضا عطوان
محمدرضا عطوان
@mratwan

تخصص: Full-Stack Developer & AI Lover

این کاری که شما انجام دادید یه کار کاملا غیر اصولیه
باعث میشه درخواست های sql بالا بره و وقتی اطلاعاتتون بیشتر بشه دچار مشکلی میشید
پیشنهاد میکنم حتما درمورد نرمال سازی جداول دیتابیس مطالعه کنید
شما باید تو همون جدول users یک فیلد به نام blocked میذاشتید

مثلا اینطوری

$table->string('blocked')->default(false);

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

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