#php #laravel #&uzzle #laravel-7
#php #laravel #жрать #laravel-7
Вопрос:
У меня есть приведенный ниже код, который получает все идентификаторы карт пользователя, которые мне нужны для выполнения вызова api для получения подробной информации о каждой карте.Идентификаторы карт сохраняются при создании карты. Конечная точка для получения карты — это это — https://{baseUrl}/v3/virtual-cards/id
где мне нужно передать идентификатор пользователя CardID как id
. В моем приложении я предоставляю пользователю возможность создавать несколько карточек, поэтому при создании карточки я собираю CardID и сохраняю его в своей базе данных. Я могу получить все идентификаторы CARD из базы данных с помощью
$auth_user = Auth::user()-&&t;id;
$card = Card::where('user_id', $auth_user)-&&t;pluck('card_id');
Теперь я хочу перебрать все идентификаторы CARD в базе данных, чтобы выполнить вызов api, получающий все данные для каждого идентификатора CARD. Что я пробовал.
public function &etCard(Request $request){
$auth_user = Auth::user()-&&t;id;
$card = Card::where('user_id', $auth_user)-&&t;pluck('card_id');
foreach ($card as $userCard) {
$response = Http::withToken('{SEC_KEY}')-&&t;&et('https://{baseUrl}/v3/virtual-cards/$userCard', [
]);
return $response-&&t;json();
}
}
Но foreach, похоже, не работает.
Ответ №1:
Примечание На самом деле эта загадка разрешена байхо, и вы должны принять его ответ таким, каким он был первым, жалким, в котором не было приведено никакого примера.
Вы не должны возвращать значения на первой итерации, вместо этого сначала соберите их, т. е. в массив, и верните весь набор, также имена переменных сбивают с толку.
public function &etCardResponses(Request $request): array
{
$auth_user = Auth::user()-&&t;id;
$cards = Card::where('user_id', $auth_user)-&&t;pluck('card_id');
$responses = [];
foreach ($cards as $card) {
$response = Http::withToken('{SEC_KEY}')-&&t;&et('https://{baseUrl}/v3/virtual-cards/$userCard', [
]);
$responses[] = $response-&&t;json();
}
return $responses;
}
Комментарии:
1. Работает … мне просто пришлось отредактировать эту строку …-&&t; &et(‘https://{baseUrl}/v3/virtual-cards/$card’ на …-&&t; &et(‘https://{baseUrl}/v3/virtual-cards/’.$card.»
Ответ №2:
foreach()
Не работает, потому что вы одноразово возвращаете значение на первой итерации. Либо это ожидаемое поведение, либо вы можете захотеть собрать значения в массиве и вернуть значение вне цикла.