Я создаю Laravel Приложение, в котором люди читают книги, а также любимые книги.
Ресурсы книг
public function toArray($request)
{
// return parent::toArray($request);
return [
'id' => $this->id,
'name' => $this->name,
'about' => $this->about,
'content' => $this->content,
'image' => $this->image_url,
'recommended' => $this->recommended,
'created_at' => $this->created_at,
'updated_at' => $this->updated_at,
'author' => $this->author,
'no_of_pages' => $this->pages,
// 'favorited' => I want o show true or false depending if user favorited
];
}
Я хочу включить в избранное Книга пользователя в пользовательской модели, поэтому она показывает значение true, если пользователь добавил в избранное и false.
Я смог сделать это в одной модели книги, выполнив это
public function showapi(Request $request, $book)
{
//$book = Book::find($book);
$book = new BookResource(Book::find($book));
$Fav = Favorite::where('book_id', $book->id)->where('user_id', $request->user_id)->exists();
if($Fav) {
return response()->json([
'book' => $book,
'Favorited' => $Fav,
]
);
}
else
return response()->json([
'book' => $book,
'Favorited' => $Fav,
]
);
}
Этот набор Избранное в True или False
Но я хочу показать Избранное в момент отправки коллекции Книг
I пытался использовать Laravel API Resource Relationship, выполняя это
'item' => FavoriteResource::collection($this->when(Favorite::where('book_id', $this->id)
->where('user_id', $request->user_id), 'item')),
Я получил эту ошибку при использовании почтальона для проверки
Сначала вызов функции-члена () по строке в файле
Это мой метод
public function indexapi()
{
return BookResource::collection(Book::with('author')->Paginate(16));
}
Это мои отношения
Модель пользователя
public function favorites(){
return $this->hasMany(Favorite::class);
}
public function books()
{
return $this->belongsToMany(Book::class);
}
Книжная модель
public function favorites()
{
return $this->hasMany(Favorite::class);
}
** Любимая модель **
public function book ()
{
return $this->belongsTo(Book::class);
}
public function author()
{
return $this->belongsTo(Author::class);
}
public function user()
{
return $this->belongsTo(User::class);
}