34

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

$filename = str_random(12);

我收到以下错误。

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

我也使用过这个random()功能,它说的是同样的事情。

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

我已经运行了如下命令:

composer dump-autoload

但我得到同样的错误。

4

4 回答 4

103

影响的可能性:高Laravel 6 升级指南

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

composer require laravel/helpers

如果不想添加包然后使用StrArr类。

例如 :

Str::random(12)

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

于 2019-09-30T07:42:04.110 回答
31

添加以下字符串库。

use Illuminate\Support\Str;

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

$filename = Str::random(40)

或者,安装以下软件包。

composer require laravel/helpers
于 2020-02-12T10:02:48.497 回答
0

就我而言,我没有在我的应用程序代码中使用任何字符串助手,所以我只需要删除已编译的类文件:

php artisan clear-compiled
于 2020-06-15T07:15:01.967 回答
-1

使用代码::

<?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";
        }
    }
于 2020-10-03T06:30:00.800 回答