• 0

خطأ must be of type Array في لارافل

لدي الحلقة التكرارية التالية ضمن الصفحة:

@foreach($emails as $email)
      <h1>
        {{ $email->content }}
      </h1>
      <p>
        {{ $email->flag }}
      </p>
@endforeach

ولكن عند تشغيل المشروع يظهر الخطأ التالي:

count(): Argument #1 ($var) must be of type Countable|array

علماً بأنني أحصل على اللائحة المطلوبة ضمن المتحكّم الخاص بذلك:

$emails = $user->emails()->where(['verified' => true]);

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 2

لأن هذا السطر يقوم بإرجاع اوبجكت من نوع Query Builder وليس Array or Collection

$emails = $user->emails()->where(['verified' => true]);

ولكي يكون الناتج array or collection تحتاج إلي استخدام ال get() function وممكن إذا كنت تريد أعمده معينه يمكن أن تعطيها لل get function as array of columns

// تقوم بإرجاع كل الداتا الخاصه باالإيميلات
$emails = $user->emails()->where(['verified' => true])->get();

// لكي تقوم بإرجاع أعمده معينه وليس كل الداتا 
// مثلا id, email فقط
$emails = $user->emails()->where(['verified' => true])->get(['id', 'email']);

 

2 اشخاص أعجبوا بهذا

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 1

عدل هذا السطر ليكون بالشكل التالي

$emails = $user->emails()->where(['verified' => true])->get();
تمّ تعديل بواسطة يوسف احمد9

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

يمكنك  أيضا إسترجاع array في  الإستعلام وذلك ب إضافة ()toArray  بعد  ()get. 

على الشكل التالي:

<?php
$emails = $user->emails()->where(['verified' => true])->get()->toArray();

بعد ذلك يمكنك إظهار النتائج التالي:

<?php

@foreach($emails as $email)
      <h1>
        {{ $email['content'] }}
      </h1>
      <p>
        {{ $email['flag'] }}
      </p>
@endforeach

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن