Laravel Введен неверный аргумент для проблемы foreach () - PullRequest
1 голос
/ 21 января 2020

Я пытаюсь получить список вещей из сервиса Steam на главной странице сайта. Но я получаю ошибку: Invalid argument supplied for foreach().

Мой клинок:

            @foreach(json_decode($giveaway->items) as $item)
            <img class="giveaway-item-img" src="https://steamcommunity-a.akamaihd.net/economy/image/class/570/{{$item->classid}}">
            </div>

        <div class="giveaway-item-name">{{$item->name}}</div>
        @endforeach

И мой контроллер:

    #GiveAway
    $kolvo=\DB::table('giveaway_items')->where('status',0)->orderBy('id', 'desc')->count();
    $giveaway = Giveaway::orderBy('id', 'desc')->first();
    $giveaway_users = \DB::table('giveaway_users')
        ->where('giveaway_id', $giveaway->id)
        ->join('users', 'giveaway_users.user_id', '=', 'users.id')
        ->get();

    $game = Game::orderBy('id', 'desc')->first();
    $items = PagesController::sortByChance(json_decode(json_encode($this->_getInfoOfGame($game))));

Но каждый раз, когда я получаю ошибку. В чем может быть проблема, как исправить ошибку?

Ответы [ 3 ]

3 голосов
/ 21 января 2020

Пожалуйста, используйте этот код

@foreach (json_decode($giveaway->items?:"{}") as $item)

Я думаю, что значение $ giveaway-> items равно Null

2 голосов
/ 21 января 2020

По умолчанию json_decode вернет объект. Вам нужно предоставить true в качестве второго аргумента, чтобы получить ассоциативный массив.

@foreach(json_decode($giveaway->items, true) as $item)
1 голос
/ 21 января 2020

Я вижу, что вы используете это в вашем php:

$items = PagesController::sortByChance(json_decode(json_encode($this->_getInfoOfGame($game))));

вам действительно нужно использовать json_encode, тогда json_decode здесь?

  • is $this->_getInfoOfGame($game) возвращать массив?
  • это PageController::sortByChange() возвращать массив?

Я бы посоветовал не злоупотреблять json_encode, json_decode, сохранять их как массивы в ваших php кодах, только json_decode Данные Steam (я предполагаю, что вы берете данные из Steam);

  • Отправка данных в виде массива на ваши представления (способ легче отладить), все зависит от того, как вы написали свой код, но я лично не вижу использования json_decode (... в представлениях.

Дайте нам знать, как это происходит.

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