bardia
6 سال پیش توسط bardia مطرح شد
3 پاسخ

Joins query

سلام
من دوتا جدول دارم جدول 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");

ثبت پرسش جدید
محمد مهدی کارگر
تخصص : طراح و برنامه نویس
@unlocker 6 سال پیش مطرح شد
0

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

DB::table(..)->select('all users')->whereNotIn('select id from blockusers ')->get();

ناصر رمضانپور
تخصص : برنامه نویس وب
@na.rmpr 6 سال پیش مطرح شد
1

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


محمدرضا عطوان
تخصص : Full-Stack Developer &...
@mratwan 6 سال پیش آپدیت شد
0

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

مثلا اینطوری

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

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

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