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

时间:2017-12-15 06:55:49

标签: 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;
            }
  

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

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

count(TutorialReview::where('TutorialID', 5)->where('UserID', 6)->get())

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

我的laravel版本 5.4

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

6 个答案:

答案 0 :(得分:5)

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

但你可以在 laravel 中使用->count()进行统计,以下是一个例子:

$count = TutorialReview::where('TutorialID', 5)->where('UserID', 6)->get()->count();

通过这种方式,您可以获得总记录数。

答案 1 :(得分:4)

只需在@之前添加count即可。即。

@count(object or array);

答案 2 :(得分:1)

要解决array_merge()问题,请尝试以下步骤:

  1. 在app / config上使用数据

    的sluggable.php配置文件

    return ['source' => null, 'maxLength' => null, 'method' => null, 'separator' => '-', 'unique' => true, 'uniqueSuffix' => null, 'includeTrashed' => false, 'reserved' => null, 'onUpdate' => false, ];

  2. 执行命令php artisan config:cache

  3. 解决count()问题Try This

    count(): Parameter must be an array or an object that implements Countable.
    

    实际上它不是错误,它是预期的行为。 Laravel 5.4或5.5与Php 7.2不完全兼容。 Count()行为只是在PHP 7.2中更改 Look at this

    另一种方法是使用PHP 7.1或更低版本,直到修复了兼容性问题。

答案 3 :(得分:0)

试试这个:

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

当计算模型实例时,也需要->count()代替count()

答案 4 :(得分:0)

只需在web.php中添加以下代码

if (version_compare(PHP_VERSION, '7.2.0', '>=')) {
    // Ignores notices and reports all other kinds... and warnings
    error_reporting(E_ALL ^ E_NOTICE ^ E_WARNING);
    // error_reporting(E_ALL ^ E_WARNING); // Maybe this is enough
}

答案 5 :(得分:-1)

PHP中的

7.2计数方法由于出于安全原因而无法使用,因此需要为该文档安装扩展程序

  

https://wiki.php.net/rfc/counting_non_countables