Проверьте, есть ли у объекта Laravel предметы - PullRequest
2 голосов
/ 25 февраля 2020

Я должен убедиться, что я показываю только foreach l oop в блейде - только если в моей переменной есть элементы.

Поэтому мне нужно проверить, является ли моя переменная - нулевой или нет (там не может быть такой переменной в очень динамичном c блейде) - у него есть элементы - если это массив, если это коллекция, если это нумерация страниц?

До сих пор я сделал эту маленькую функцию, но это выглядит довольно странно, и, поскольку я не очень хорошо разбираюсь в Laravel, мне интересно, есть ли уже что-то лучше?

public static function hasItems($object) {
        if (is_null($object)) {
            return false;
        }

        //array
        if (
            is_array($object) && 
            count($object) > 0
        ) {
            return true;
        }

        //Laravel collection
        if (
            is_object($object) &&
            $object instanceof \Illuminate\Support\Collection &&
            $object->count() > 0            
        ) {
            return true;
        }

        //Laravel paginator
        if (
            is_object($object) &&
            $object instanceof \Illuminate\Pagination\LengthAwarePaginator &&
            count($object) > 0          
        ) {
            return true;
        }

        return false;
    }

1 Ответ

1 голос
/ 25 февраля 2020

Вы можете использовать isEmpty() метод ссылка . Или в Blade вы можете использовать директиву @forelse, которая в основном foreach со ссылкой if

Edit 1: я только что понял, что вы сказали, что вы также можете получить null в качестве значения , Тогда решение:

forelse($var ?? [] as $varItem)

@empty

@endforelse 
...