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

حذف اطلاعات

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

public function destroy(int $index)
    {
        $order = Order::where('id', $index)->first();
        $order->delete();
        return redirect()->back();
    }

حالا اگر بخوام عمل حذف رو از قسمت پیشنهادات مشتریان انجام بدم باید چیکار کنم؟

دستوری که در کنترلر نوشتم به این صورت هست که اطلاعات هم به درستی نمایش میده ولی حذف نمیدونم باید چیکار کنم!؟

$offers = Order::select('user_id')->where('estate_id', auth()->user()->id)->get();

ثبت پرسش جدید
Muhammad
تخصص : Back-End Developer
@muhammad 4 سال پیش مطرح شد
0

سلام.

اول: در حین دیباگ‌کردن، هلپر dd بهترین دوست شماست و می‌تونستید متغیر offers$ رو باهاش چک کنید.
دوم: شرط شما ایراد داره، چون گفتید که اگه estate_id برابر id کاربر فعلی بود، مگه estate_id همون id ملک نیست؟!
سوم: چرا از select استفاده کردید؟ شما که user_id رو دارید و نیازی بهش نیست!
چهارم: شما با get یک collection خواهید داشت، پس نباید delete رو روی اون صدا بزنید. شما اگه به جای get بنویسید delete درست میشه.
پنجم: اگه جای دیگه‌ای قراره از id این املاک (نه یوزرها) استفاده کنید، اینطوری انجامش بدید:

$offers = Order::where('user_id', auth()->user()->id)->pluck('id');
// Do what you want here
Order::destroy($offers);

زندگیتون بی‌باگ 😏


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

@muhammad
ببینید دوست عزیز فرض کنید کاربر شماره 1 اومده یه ملک ثبت کرده و کاربر شماره 2 اومده ملک کاربر شماره 1 رو سفارش داده، الان قسمت پیشنهادات مشتریان کاربر شماره 1، مشخصات کاربر شماره 2 و مشخصات اون ملکی که کاربر شماره 2 سفارش داده رو میشه مشاهده کرد با استفاده از دستور زیر که به درستی هم کار میکنه.

$offers = Order::select('user_id')->where('estate_id', auth()->user()->id)->get();

مشکل من اینجاست که قسمت پیشنهادات مشتریان یک دگمه حذف گذاشتم الان مشکل اینجاست که هر کاربر چطور بتونه پیشنهادات مشتریان رو حذف کنه؟

در واقع فانکشن destroy رو چطور بنویسم؟


Muhammad
تخصص : Back-End Developer
@muhammad 4 سال پیش مطرح شد
0

از اینکه کد کار می‌کنه متعجبم، اما متد destroy: این متد رو روی مدل صدا زده میشه و می‌تونید بهش آرایه‌ای از idهای اون جدول رو بدید.
همچنین اگه به جای get روی همین کوئری خودتون (در صورتی که واقعا کار کنه) delete بزنید، رکوردهارو حذف می‌کنه.


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

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