解决在laravel 5.4应用程序中升级到php 7.2的问题

ati*_*ary 7 php laravel laravel-5.4 laravel-5.5

我本周已将我的laravel应用程序php版本升级到php 7.2,从那时起我在laravel应用程序中遇到了大问题.在将PHP升级到7.2之前,每件事都很有效.

主要问题是关于count()和array_merge()函数抛出此错误:

为array_merge()函数的代码是如下:

$array = array_merge(
                $model->toSearchableArray(), $model->scoutMetadata()
            );

            if (empty($array)) {
                return;
            }
Run Code Online (Sandbox Code Playgroud)

ErrorException·array_merge():参数#1不是数组.

count()当模型没有返回任何记录并返回null时,我在此代码中遇到错误:

count(TutorialReview::where('TutorialID', 5)->where('UserID', 6)->get())
Run Code Online (Sandbox Code Playgroud)

count():参数必须是实现Countable的数组或对象.

我的laravel版本是5.4

现在我的问题是如何解决问题,并升级到laravel 5.5解决任何问题?

Bha*_*nki 5

在PHP 7.2中改变count()了以下RFC中的行为:https://wiki.php.net/rfc/counting_non_countables

但你可以->count()在laravel中使用,这是一个例子:

$count = TutorialReview::where('TutorialID', 5)->where('UserID', 6)->get()->count();
Run Code Online (Sandbox Code Playgroud)

这样您就可以获得总记录数.


Dor*_*gen 1

尝试这个:

$array = array_merge(
    collect($model->toSearchableArray())->toArray(), $model->scoutMetadata()
);
Run Code Online (Sandbox Code Playgroud)

->count()另外,在计算模型实例时,也可以这样做count()