使用 foreach 进行 api 调用以循环遍历数组

Make an api call using foreach to loop over an array

我在下面有这段代码可以获取用户的所有 cardId,我需要调用 api 来获取创建卡片时保存的每个 card.The cardId 的详细信息。 拿卡的终点是这样—— https://{baseUrl}/v3/virtual-cards/id 我需要将用户的 cardId 作为 id 传递。 在我的应用程序中,我使用户可以创建多张卡片,因此在创建卡片时我会收集 cardId 并将其保存到我的数据库中。我可以使用

从数据库中获取所有 cardId
$auth_user = Auth::user()->id;
$card = Card::where('user_id', $auth_user)->pluck('card_id');

现在我想遍历数据库中的所有 cardId,使 api 调用获取每个 cardId 的所有数据。我试过的。

 public function getCard(Request $request){
        $auth_user = Auth::user()->id;
        $card = Card::where('user_id', $auth_user)->pluck('card_id');
         foreach ($card as $userCard) {
        $response = Http::withToken('{SEC_KEY}')->get('https://{baseUrl}/v3/virtual-cards/$userCard', [
          ]);
          return $response->json();
         }
  
    }

但是 foreach 似乎不起作用。

foreach() 不起作用,因为您 one-off return 在第一次迭代中输入了一个值。这是预期的行为,或者您可能希望收集数组中的值和 return 循环外的值。

注意其实这个谜团已经被baikho解开了,你应该接受他第一次的回答,可惜没有给出任何样本。

您不应该在第一次迭代中 return 值,而是收集它们,即首先在数组中和 return 整个集合,变量名称也很混乱。

public function getCardResponses(Request $request): array
{
    $auth_user = Auth::user()->id;
    $cards = Card::where('user_id', $auth_user)->pluck('card_id');
    $responses = [];
    foreach ($cards as $card) {
        $response = Http::withToken('{SEC_KEY}')->get('https://{baseUrl}/v3/virtual-cards/$userCard', [
        ]);
        $responses[] = $response->json();
    }
    return $responses;
}