将Laravel从5.6升级到6.0后,对未定义的str_random()函数的调用不起作用

时间:2019-09-30 07:36:50

标签: php laravel laravel-6 laravel-helper laravel-upgrade

我已经将Laravel从5.6升级到6.0。以前,默认的辅助功能在控制器上运行良好,但现在显示为“ 未定义”。在我的控制器中,我使用了以下内容。

$filename = str_random(12);

我遇到以下错误。

  

消息:“调用未定义的函数   App \ Http \ Controllers \ str_random()“

我还使用了random()函数,它的意思是相同的。

有人可以指导我该怎么做吗。

我有运行命令,例如:

composer dump-autoload

但是我遇到同样的错误。

4 个答案:

答案 0 :(得分:21)

  

影响力:高Laravel 6 Upgrade Guide

在Laravel 6中,所有str_array_助手都已移至新的laravel/helpers Composer程序包中,并已从框架中删除。如果需要,您可以更新对这些帮助程序的所有调用,以使用Illuminate\Support\StrIlluminate\Support\Arr类。另外,您可以将新的laravel/helpers包添加到您的应用程序中,以继续使用这些帮助程序:

composer require laravel/helpers

如果不想添加包,则使用StrArr类。

例如:

Str::random(12)

https://laravel.com/docs/master/helpers#method-str-random

答案 1 :(得分:16)

添加以下字符串库。

use Illuminate\Support\Str;

现在您可以按以下方式使用它。

$filename = Str::random(40)

或者,安装以下软件包。

composer require laravel/helpers

答案 2 :(得分:0)

在我的情况下,我没有在应用程序代码中使用任何字符串助手,因此我只需要删除编译后的类文件:

php artisan clear-compiled

答案 3 :(得分:0)

使用代码::

<?php

namespace App\Http\Controllers;

use Exception;
use Illuminate\Support\Str;
use Illuminate\Support\Arr;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;



   public function index()
    {
        $count=15;
        try {
            DB::statement('truncate users');
            DB::beginTransaction();
            while ($count--){
                $id = DB::table('users')->insertGetId( [
                    'name'=>'Sample'.$count,
                    'password'=>random_int(1000000,99999999)
                ]);
                foreach (range(1,rand(1,3)) as $index ){
                    DB::insert('INSERT INTO posts (userid,title,body) VALUES (:userid,:title,:body)',[
                            'userid'=>$id,
                            'title'=>str::random(15),
                            'body'=>str::random(50),
                        ]);
                }
                DB::commit();
            }
        }catch (\Exception $errors){
            DB::rollBack();
            Log::error($errors);
            return "mission filed";
        }
    }