Зацикливание всех данных в Laravel Ответе API - PullRequest
0 голосов
/ 17 апреля 2020

Я работаю над API, в модели книги я хочу дать ответ, который будет содержать книгу и ее любимый статус. Если аутентифицированный пользователь предпочитает книгу, она должна быть истинной, иначе она должна быть ложной. Это код, который я придумал, но этот код только l oop один раз. Есть ли способ, которым я могу l oop всех книг в ответе?

public function indexapi(Request $request)
    {
    $books = BookResource::collection(Book::with('author')->Paginate(16));
    $count = Book::with('author')->count();
    $Fav = Favorite::where('book_id', $request->book_id)->where('user_id', $request->user_id)->exists();
      foreach($books as $key => $book) {
            return response()->json([
          'book' => $book, 
          'Favorited' => $Fav,
          ]
      );  
    }

Я пытаюсь l oop book и favourite в моем ответе API, чтобы получить ответы типа это

{
    "book": {
        "id": 2,
        "name": "4.50 from Paddington",
        "author": {
            "id": 2,
            "name": "Agatha Christie",
        },
    },

    "Favorited": false
}

{
    "book": {
        "id": 2,
        "name": "4.50 from Paddington",
        "author": {
            "id": 2,
            "name": "Agatha Christie",
        },
    },

    "Favorited": false
}

{
    "book": {
        "id": 2,
        "name": "4.50 from Paddington",
        "author": {
            "id": 2,
            "name": "Agatha Christie",
        },
    },

    "Favorited": true
}

Я застрял в этом

Я пытался использовать 'while l oop' и 'foreach' вместе.

1 Ответ

1 голос
/ 17 апреля 2020

Он зацикливается только один раз, потому что он встретит оператор return, а когда это произойдет, l oop остановит его выполнение, попробуйте это, поскольку я не проверял его и посмотрел, работает ли он у вас

 public function indexapi(Request $request)
    {
    $books = BookResource::collection(Book::with('author')->Paginate(16));
    $count = Book::with('author')->count();
    $Fav = Favorite::where('book_id', $request->book_id)->where('user_id', 

$request->user_id)->exists();
$books_array=[];

      foreach($books as $key => $book) {
//this is if you are pushing without key
array_push($books_array,$book);
//now with keys
$books_array['books']=$book;
$books_array['favourited']=$fav;
      );  
/*for efficiency, you can add the favourited outside the loop and delete it in the loop and it will look like this */
$books_array['favourited']=$fav;
return response()->json(['books'=>$books_array]);
          );


    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...