Amir Alsaeed نشر 18 مارس 2021 أرسل تقرير نشر 18 مارس 2021 لدي جدول في قاعدة البيانات: 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. ما الخطأ في ذلك؟ اقتباس
0 بلال زيادة نشر 18 مارس 2021 أرسل تقرير نشر 18 مارس 2021 عندما تستخدم get () تحصل على مجموعة. في هذه الحالة تحتاج إلى تكرارها للحصول على الخصائص: @foreach ($about as $a) {{ $a->title }} @endforeach أو يمكنك فقط الحصول على أحد العناصر من خلال فهرسها: {{ $about[0]->title }} 1 اقتباس
0 Sam Ahw نشر 18 مارس 2021 أرسل تقرير نشر 18 مارس 2021 المشكلة بسبب get فهي تعيد مجموعة من السجلات بدل من سجل واجد، ويمكنك إجراء حلقة للمرور على هذه السجلات كما تم الشرح في التعليقات. ولكن في حال كانت البيانات المراد تمريرها هي لسجل واحد (أي لا وجود لعدة سجلات) لا داعي لاستخدام الحلقات. يمكنك تغيير الاستعلام وإضافة first وعندها سيتم استعادة أول سجل ويتم قصره ليصبح سجل واحد بدلاً من مجموعة بالشكل التالي: $about = Page::where('page', 'about-me')->first(); 1 اقتباس
0 سمير عبود نشر 18 مارس 2021 أرسل تقرير نشر 18 مارس 2021 إن كان الهدف هو إرجاع سجل واحد فالأفضل إستخدام التابع 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 في حالة عدم وجود أي سجل 1 اقتباس
السؤال
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.
ما الخطأ في ذلك؟
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.