Joins query

3 سال پیش توسط bardia مطرح شد
آفلاین
user-avatar
bardia ( 22926 تجربه )
3 سال پیش
تخصص : Golang/Laravel

لینک کوتاه اشتراک گذاری

0

سلام
من دوتا جدول دارم جدول 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");
آفلاین
user-avatar
محمد مهدی کارگر ( 31024 تجربه )
3 سال پیش
تخصص : طراح و برنامه نویس

لینک کوتاه اشتراک گذاری

0

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

DB::table(..)->select('all users')->whereNotIn('select id from blockusers ')->get();
آفلاین
user-avatar
ناصر رمضانپور ( 1559 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

1

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

آفلاین
user-avatar
محمدرضا عطوان ( 13735 تجربه )
3 سال پیش

لینک کوتاه اشتراک گذاری

0

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

مثلا اینطوری

$table->string('blocked')->default(false);
برای ارسال پاسخ لازم است، ابتدا وارد سایت شوید.