Programmer Programmers نشر 31 ديسمبر 2023 أرسل تقرير نشر 31 ديسمبر 2023 يظهر خطأ في الController عند استدعاء الدالة auth()->user()->rated($book) هذا ال BookController public function rate(Request $request, Book $book) { if(auth()->user()->rated($book)) { $rating = Rating::where(['user_id' => auth()->user()->id, 'book_id' => $book->id])->first(); $rating->value = $request->value; $rating->save(); } else { $rating = new Rating; $rating->user_id = auth()->user()->id; $rating->book_id = $book->id; $rating->value = $request->value; $rating->save(); } return back(); } وهذا ال Model public function rated(Book $book) { return $this->ratings->where('book_id', $book->id)->isNotEmpty(); } اقتباس
0 Khaled Osama3 نشر 1 يناير أرسل تقرير نشر 1 يناير بتاريخ 23 ساعة قال Programmer Programmers: يظهر خطأ في الController عند استدعاء الدالة auth()->user()->rated($book) هذا ال BookController public function rate(Request $request, Book $book) { if(auth()->user()->rated($book)) { $rating = Rating::where(['user_id' => auth()->user()->id, 'book_id' => $book->id])->first(); $rating->value = $request->value; $rating->save(); } else { $rating = new Rating; $rating->user_id = auth()->user()->id; $rating->book_id = $book->id; $rating->value = $request->value; $rating->save(); } return back(); } وهذا ال Model public function rated(Book $book) { return $this->ratings->where('book_id', $book->id)->isNotEmpty(); } المشكلة هنا أن auth()->user() سيعيد مستخدم متصل بشكل مباشر وليس موديل مستخدم. لكي تستدعي الدالة rated من الموديل يجب أن تحول المستخدم المتصل إلى موديل: $user = auth()->user(); if($user->rated($book)) { // code.. } أو استدعاء الدالة مباشرة على موديل المستخدم: if(auth()->user()->load('ratings')->rated($book)) { // code.. } حيث تقوم بتحميل علاقة التقييمات ratings لكي تتمكن من استدعاء الدالة rated. المهم هو أن تحول المستخدم المتصل إلى موديل قبل استدعاء أي دالة من موديل المستخدم. اقتباس
السؤال
Programmer Programmers
يظهر خطأ في الController عند استدعاء الدالة auth()->user()->rated($book)
هذا ال BookController
public function rate(Request $request, Book $book) { if(auth()->user()->rated($book)) { $rating = Rating::where(['user_id' => auth()->user()->id, 'book_id' => $book->id])->first(); $rating->value = $request->value; $rating->save(); } else { $rating = new Rating; $rating->user_id = auth()->user()->id; $rating->book_id = $book->id; $rating->value = $request->value; $rating->save(); } return back(); }
وهذا ال Model
public function rated(Book $book) { return $this->ratings->where('book_id', $book->id)->isNotEmpty(); }
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.