Выдается предупреждение: count (): Параметр должен быть массивом или объектом, который реализует счетное - PullRequest
0 голосов
/ 27 сентября 2019

При использовании "laravel/framework": "5.8.*",

я получаю следующую ошибку:

    $user = App\User::find(314);
    dump(PHP_VERSION);
    dump(is_object($user));
    dump(is_array($user));
    dump(count($user));
    dd($user);

Я получаю следующую ошибку count(): Parameter must be an array or an object that implements Countable

Однако, когда я отключаю предупреждение.Мы получаем правильный вывод @dump(count($user));

"7.2.19"
true
false
1
User {#821 ▼
  #table: "users"
  #guarded: array:5 [▶]

....


Примечание: count () работает, когда коллекция имеет более 1.

    $users = App\User::find([12,13,14,15,165,166,1666,133,11,111]);
    dump(PHP_VERSION);
    dump(is_object($user));
    dump(is_array($user));
    dump(count($user));
    dd($user);

вывод:

"7.2.19"
true
false
9
Collection {#825 ▼
  #items: array:9 [▶]
}

1 Ответ

0 голосов
/ 27 сентября 2019

Метод count не поддерживается, когда возвращаемые данные могут отличаться от массива или объекта.Альтернативой может быть использование оператора where, который всегда возвращает массив:

$users = App\User::whereIn('id', [12,13,14,15,165,166,1666,133,11,111])->get();
var_dump($users);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...