اذهب إلى المحتوى

السؤال

نشر

السلام عليكم 

عيدكم مبارك وكل عام وانتم بخير وينعاد عليكم بكل خير.

اردت الحصول على قيمة state

    public function servicesInCart(){
        return $this->belongsToMany(Service::class)->withPivot(['Quantity' , 'state'])->wherePivot('state' , 0);        
    }

في محرك القوالب blade بهذا الشكل :

                               @if ( Auth::user()->servicesInCart->pivot->state == 1)
                               <li class="nav-item">
                                <a @disabled(true) class="nav-link" href="{{ route('authors.list') }}">إدارة طلبي</a>
                              </li>
                               @endif

ولكن في الأخير يظهر لي الخطأ التالي :

Untitled.thumb.png.8a63c08f00eaf9c37ca4ec5f8c68cbba.png

Recommended Posts

  • 1
نشر
بتاريخ الآن قال Brahim Semmani:

جربت تغيير الخطأ 

لاحظ أنك تستخدم الخاصية pivot من خلال العلاقة servicesInCart بشكل مباشر وهذا خاطئ , عند استدعاء العلاقة servicesInCart سوف يتم جلب عدد من الكائنات من الموديل Service وكل كائن يحتوي على الخاصية pivot , اذن يكون الاستخدام كالتالي

@foreach(Auth::user()->servicesInCart() as $service)
  @if ( $service->pivot->state == 1)
    <li class="nav-item">
      <a @disabled(true) class="nav-link" href="{{ route('authors.list') }}">إدارة طلبي</a>
    </li>
  @endif
@endforeach

جرب الامر وأخبرنا بالنتيجة

  • 1
نشر
بتاريخ 11 دقائق مضت قال Brahim Semmani:

جربت صحيح ملاحظة مهمة يا أستاذ شكرا لك لكن  تعذر العثور على pivot ؟

 

ربما بسبب تعريف العلاقة حيث أنك تضع الحقلين Quantity و state بداخل مصفوفة , لاحظ

public function servicesInCart(){
        return $this->belongsToMany(Service::class)->withPivot(['Quantity' , 'state'])->wherePivot('state' , 0);  
                                                               ^^^^^^^^^^^^^^^^^^^^^^^
    }

أرجو منك تعديل العلاقة كالتالي

public function servicesInCart(){
        return $this->belongsToMany(Service::class)->withPivot('Quantity' , 'state')->wherePivot('state' , 0);        
    }

ثم حاول ازالة الأقواس عند استدعاء العلاقةservicesInCart servicesInCart كالتالي

@foreach(Auth::user()->servicesInCart as $service)

وأخبرنا بالنتيجة

  • 1
نشر
بتاريخ 2 دقائق مضت قال Brahim Semmani:

شكرا أستاذ @محمد أبو عواد ’ لم يظهر الخطأ لكن لم يؤدي الغرض المطلوب رغم أن قيمة $service->pivot->state == 1 

بالفعل محققة لما ألقيت نظرة على قاعدة البيانات .

. شكرا

يتبقى الآن أن تقوم بتفحص المنطق جيدا والكود الذي كتبته , لاحظ أن العلاقة servicesInCart تقوم بإرجاع جميع الخدمات التي قيمة الحقل state لها تساوي 0 , لاحظ

public function servicesInCart(){
        return $this->belongsToMany(Service::class)->withPivot(['Quantity' , 'state'])->wherePivot('state' , 0);   
                                                                                                   ^^^^^^^^^^^^
    }

فبالتأكيد عند تفحص الشرط 

@if ( $service->pivot->state == 1)

لن يتحقق لأن جميع البيانات التي سوف يتم ارجاعها من العلاقة servicesInCart قيمة الحقل state لها تساوي 0 , الآن عليك تفحص منطق الكود الذي تحاول تنفيذه

  • 0
نشر
بتاريخ 9 ساعات قال محمد أبو عواد:

لاحظ أنك تستخدم الخاصية pivot من خلال العلاقة servicesInCart بشكل مباشر وهذا خاطئ , عند استدعاء العلاقة servicesInCart سوف يتم جلب عدد من الكائنات من الموديل Service وكل كائن يحتوي على الخاصية pivot , اذن يكون الاستخدام كالتالي


@foreach(Auth::user()->servicesInCart() as $service)
  @if ( $service->pivot->state == 1)
    <li class="nav-item">
      <a @disabled(true) class="nav-link" href="{{ route('authors.list') }}">إدارة طلبي</a>
    </li>
  @endif
@endforeach

جرب الامر وأخبرنا بالنتيجة

جربت صحيح ملاحظة مهمة يا أستاذ شكرا لك لكن  تعذر العثور على pivot ؟

Untitled.thumb.png.493fce2f0b9a7d83efe4035bd0d20f73.png

 

  • 0
نشر
بتاريخ 9 ساعات قال محمد أبو عواد:

ربما بسبب تعريف العلاقة حيث أنك تضع الحقلين Quantity و state بداخل مصفوفة , لاحظ


public function servicesInCart(){
        return $this->belongsToMany(Service::class)->withPivot(['Quantity' , 'state'])->wherePivot('state' , 0);  
                                                               ^^^^^^^^^^^^^^^^^^^^^^^
    }

أرجو منك تعديل العلاقة كالتالي


public function servicesInCart(){
        return $this->belongsToMany(Service::class)->withPivot('Quantity' , 'state')->wherePivot('state' , 0);        
    }

ثم حاول ازالة الأقواس عند استدعاء العلاقةservicesInCart servicesInCart كالتالي


@foreach(Auth::user()->servicesInCart as $service)

وأخبرنا بالنتيجة

شكرا أستاذ @محمد أبو عواد ’ لم يظهر الخطأ لكن لم يؤدي الغرض المطلوب رغم أن قيمة $service->pivot->state == 1 

بالفعل محققة لما ألقيت نظرة على قاعدة البيانات .

. شكرا

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...