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

خطأ property does not exist في لارافيل

Amir Alsaeed

السؤال

لدي جدول في قاعدة البيانات:

CREATE TABLE `about` (
`id` int(10) UNSIGNED NOT NULL,
`title` varchar(500) COLLATE utf8_unicode_ci NOT NULL,
`content` text COLLATE utf8_unicode_ci,
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

وأحاول تمرير البيانات إلى الوجهة عن طريق المتحكم الخاص بها:

public function index()
{
    $about = Page::where('page', 'about-me')->get(); //id = 3

    return view('about', compact('about'));
}

ضمن blade:

@section('title')
    {{$about->title}}
@stop

@section('content')
    {!! $about->content !!}
@stop

ولكن عند التوجه للصفحة يظهر لدي الخطأ التالي:

Property [title] does not exist on this collection instance.

ما الخطأ في ذلك؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 0

عندما تستخدم get () تحصل على مجموعة. في هذه الحالة تحتاج إلى تكرارها للحصول على الخصائص:

@foreach ($about as $a)
    {{ $a->title }}
@endforeach

أو يمكنك فقط الحصول على أحد العناصر من خلال فهرسها:

{{ $about[0]->title }}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

المشكلة بسبب get فهي تعيد مجموعة من السجلات بدل من سجل واجد، ويمكنك إجراء حلقة للمرور على هذه السجلات كما تم الشرح في التعليقات.

ولكن في حال كانت البيانات المراد تمريرها هي لسجل واحد (أي لا وجود لعدة سجلات) لا داعي لاستخدام الحلقات. يمكنك تغيير الاستعلام وإضافة first وعندها سيتم استعادة أول سجل ويتم قصره ليصبح سجل واحد بدلاً من مجموعة بالشكل التالي:

$about = Page::where('page', 'about-me')->first();

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

إن كان الهدف هو إرجاع سجل واحد فالأفضل إستخدام التابع find او first او findOrFail او firstOrFail لأن get تُعيد مجموعة سجلات حتى و لو كانت النتيجة هي سجل واحد فستُعيد السجل بداخل مصفوفة:

$about = Page::where('page', 'about-me')->first();

$about = Page::where('page', 'about-me')->firstOrFail(); // إرجاع الصفحة 404 في حالة عدم وجود أي سجل

$about = Page::find(3); // إبحث عن السجل ذو المعرف 3

$about = Page::findOrFail(3); // إرجاع الصفحة 404 في حالة عدم وجود أي سجل

 

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...