【问题标题】:Looping all Data in Laravel API Response在 Laravel API 响应中循环所有数据
【发布时间】:2020-04-17 19:48:46
【问题描述】:

我正在开发一个 API,在图书模型中,我想给出一个包含图书和图书收藏状态的响应。如果经过身份验证的用户收藏了这本书,那么它应该是真的,否则它应该是假的。这是我想出的代码,但这段代码只循环一次。它有一种方法可以让我循环响应中的所有书籍吗?

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,
          ]
      );  
    }

我正在尝试在我的 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 循环”和“foreach”。

【问题讨论】:

  • "但这段代码只循环一次。"因为您要在 for-each 中返回 - 尝试将它们放入临时数组、集合等中,然后请返回。
  • @ersoy 请问我该怎么做
  • 在 foreach 之前只创建一个 $array = [];并将它们推入 foreach,然后返回该数组。因为您通过在其中使用“return”来返回 foreach 的第一次迭代。

标签: php laravel


【解决方案1】:

它只循环一次,因为它会遇到 return 语句,当它遇到时,循环将停止执行,试试这个,因为我没有测试它,看看它是否适合你

 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]);
          );


    }

【讨论】:

  • 它返回了这个错误“消息”:“调用数组上的成员函数push()”,
  • 对不起,这个功能被滥用了,我现在重写它
  • 尝试编辑过的,我忘了这是php而不是javascript
  • 我忘记收藏了,现在才添加
  • 请多做一件事,为了效率,不要在循环中添加收藏夹,您可以在循环后添加它,我编辑给您看
猜你喜欢
  • 2014-10-09
  • 2022-08-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多