راکت
حل شده

ارور Call to a member function delete on null

6 پاسخ

سلام دوستان
من یه متدی دارم که شماره هایی که مال مشتری هست رو پاک میکنه
یعنی بین مشتری و شماره مبایل ها رابطه یک به چند زدم
بار اول که روی حذف میزنم میگه شماره موبایل با موفقیت حذف شد
ولی بعد رفرش صفحه هنوز شماره موبایل هستش
توی دیتابیس هم چک میکم ولی باز هستش
وقتی بار دوم روی حذف شماره موبایل میزنم این ارور رو میده Call to a member function delete() on null

این هم متدی که دارم

public function removeMobileNumber($mobile_number_id)
    {
        MobileNumber::find($mobile_number_id)->delete();

        return redirect('/admin-panel/customers/mobile-numbers/' . $mobile_number_id . '')->with('remove-mobile-number', 'شماره موبایل با موفقیت حذف شد!');
    }

روت هارو هم درست دادم ولی باز حذف نمیکنه
ممنون میشم کمکم کنید

ثبت پرسش جدید

پاسخ‌ها

6
سبحان دادخواه
سبحان دادخواه
@SobhanDadkhah

تخصص: دانشجوی برنامه نویسی :)

بهترین پاسخ

@m.reza6920 با سلام
توجه کنید که شما در نظر دارید یک گزینه ای غیر از id هر سطر که احتمالا کلید خارجی هست رو جستجو کنید و همه ی موارد پیدا شده رو حذف کنید اما با کدی که شما نوشتین داره id رو پیدا میکنه و حذف میکنه یعنی سطر هایی که شما نمیخواین حذف بشه داره به اشتباه حذف میشه!!

نکته ای که هست دقت کنید محیط phpmyadmin داره با استایل و رنگ متفاوت این مقادیر رو نشون میده. معمولا وقتی آبی رنگ نشون میده اطلاعات رو یعنی یک کلید خارجی دارید. فیلد id منحصر به فرد هر سطر که خود دیتابیس اضافه میکنه مشکی رنگ هست!
حدس میزنم شما میخواین تمامی شماره همراه های یک کاربر خاص رو حذف کنید! یک راه این هست که از طریق کاربر و ریلیشنی که بین کاربر و شماره ها ایجاد کردین حذف انجام بدین. یک راه این هست که هر شماره موبایل رو با آیدی منحصر به فرد خودش حذف کنید که در این مثال شما در عکس مقادیر مشکی رنگ میشن آیدی...

درواقع اون 2 آیدی کاربر x هست که دارید از طریق پارامتر url ارسال میکنید، باید همچین چیزی داشته باشید:

public function removeMobileNumbers($userID)
 {
        MobileNumber::where('user_id',$userID)->get(); // کالکشن تمامی شماره های یوزر مربوطه
        // حذف شماره موبایل ها ...
 }

امیدوارم متوجه منظورم شده باشید. 🤞

علیرضا کفایتی
علیرضا کفایتی
@alirezakefayati

تخصص: برنامه نویس laravel, vue.js

سلام
مشکل از $mobilenumberid هست احتمالا ، یک دور dd بگیرید ازش ببینید چی برمیگردونه و یا اصلا همچین آیدی برای شماره موبایل هست یا خیر
در ضمن به نظرم در این مورد بهتر هست از Route Model Binding استفاده کنید یا از تابعی که آقای مولایی فرمودند استفاده کنید

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

سلام شماره کامل حذف شده و الان برای شما شماره رو پیدا نمی کنه توصیه من استفاده از متد findOrFail هست که اگر پیدا نشد 404 بر می گردونه مثال:

MobileNumber::findOrFail($mobile_number_id)->delete();

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

محمدرضا فلکی
محمدرضا فلکی
@m.reza6920

تخصص: Learning Laravel

اگر پاک شده باشه و این ارور یا not found رو میده پس چرا هنوز توی دیتابیس هست @websaz
$mobile_number_id رو هم dd گرفتم داخلش همون id بود و کار میکرد @gomnam

سبحان مولایی
سبحان مولایی
@websaz

تخصص: برنامه‌نویس وب: Python :: Django :: Node :: Php :: Laravel :: JS :: React :: React Native

مطمئن هستید توی دیتابیس هست یک عکس از دیتابیس قرار میدید؟

محمدرضا فلکی
محمدرضا فلکی
@m.reza6920

تخصص: Learning Laravel

@websaz برای مثال من روی حذف سه تا شماره موبایلی که ایدی 2 داره میزنم و not found میده یعنی حذف شده
شماره موبایل های مشتری

ولی توی database هنوز سه تا شماره مبایل ایدی 2 هست
دیتابیس

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

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