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

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

سلام دوستان
من یه متدی دارم که شماره هایی که مال مشتری هست رو پاک میکنه
یعنی بین مشتری و شماره مبایل ها رابطه یک به چند زدم
بار اول که روی حذف میزنم میگه شماره موبایل با موفقیت حذف شد
ولی بعد رفرش صفحه هنوز شماره موبایل هستش
توی دیتابیس هم چک میکم ولی باز هستش
وقتی بار دوم روی حذف شماره موبایل میزنم این ارور رو میده 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', 'شماره موبایل با موفقیت حذف شد!');
    }

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


ثبت پرسش جدید
سبحان دادخواه
تخصص : دانشجوی برنامه نویسی :)
@SobhanDadkhah 3 سال پیش آپدیت شد
0

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

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

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

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

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


علیرضا کفایتی
تخصص : برنامه نویس laravel, vue.js
@alirezakefayati 3 سال پیش آپدیت شد
0

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


سبحان مولایی
تخصص : برنامه‌نویس وب: Python ::...
@websaz 3 سال پیش مطرح شد
0

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

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

محمدرضا فلکی
تخصص : Learning Laravel
@m.reza6920 3 سال پیش مطرح شد
0

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


سبحان مولایی
تخصص : برنامه‌نویس وب: Python ::...
@websaz 3 سال پیش مطرح شد
0

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


محمدرضا فلکی
تخصص : Learning Laravel
@m.reza6920 3 سال پیش مطرح شد
0

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

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


سبحان دادخواه
تخصص : دانشجوی برنامه نویسی :)
@SobhanDadkhah 3 سال پیش آپدیت شد
0

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

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

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

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

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


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

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