将 Laravel 从 5.6 升级到 6.0 后,调用未定义的 str_random() 函数不起作用
Posted
技术标签:
【中文标题】将 Laravel 从 5.6 升级到 6.0 后,调用未定义的 str_random() 函数不起作用【英文标题】:After upgrading Laravel from 5.6 to 6.0, Call to undefined str_random() function not working 【发布时间】:2020-01-29 11:36:18 【问题描述】:我已将 Laravel 从 5.6 升级到 6.0。以前,默认帮助函数在控制器上运行良好,但现在它显示“undefined”。在我的控制器中,我使用了以下内容。
$filename = str_random(12);
我收到以下错误。
消息:“调用未定义的函数 应用\Http\Controllers\str_random()"
我也用过random()
函数,它的意思是一样的。
有人可以指导我怎么做吗?
我已经运行了类似的命令:
composer dump-autoload
但我得到了同样的错误。
【问题讨论】:
就我而言,str_random()
已在 5.8 中删除,看起来根本不受支持。试试这个:laravel.com/docs/6.x/helpers#method-str-random
能否请您在文档中的哪个位置发布“这些功能”仍受支持? laravel.com/docs/6.x/helpers#method-str-random 说是Str::random()
@kerbholz : 你好先生,我很抱歉,我已经看到 5.6 文档代替 6.0 现在我已经拉下顶部选择框并将版本设置为 6.0,我看不到你有什么写的是对的
【参考方案1】:
影响的可能性:高Laravel 6 Upgrade Guide
在 Laravel 6 中,所有 str_
和 array_
助手都已移至新的 laravel/helpers
Composer 包并从框架中删除。如果需要,您可以更新对这些帮助程序的所有调用以使用 Illuminate\Support\Str
和 Illuminate\Support\Arr
类。或者,您可以将新的 laravel/helpers
包添加到您的应用程序以继续使用这些帮助程序:
composer require laravel/helpers
如果不想添加 Package,则使用 Str
和 Arr
类。
例如:
Str::random(12)
https://laravel.com/docs/master/helpers#method-str-random
【讨论】:
Str::replace 不存在,而是我可以使用什么?如果我想替换为? 使用内置的str_replace
函数,否则按照我的回答。【参考方案2】:
添加以下字符串库。
use Illuminate\Support\Str;
现在你可以像下面这样使用它了。
$filename = Str::random(40)
或者,安装以下软件包。
composer require laravel/helpers
【讨论】:
【参考方案3】:在我的例子中,我没有在我的应用程序代码中使用任何字符串助手,所以我只需要删除已编译的类文件:
php artisan clear-compiled
【讨论】:
【参考方案4】:使用代码::
<?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";
【讨论】:
冗余代码太多,抱歉。以上是关于将 Laravel 从 5.6 升级到 6.0 后,调用未定义的 str_random() 函数不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.6:升级 composer.json 后调用未定义的方法 ...\Store::getToken()
将 mysql 从 5.6 升级到 5.7 后“在用户表中找不到任何匹配的行”