我已经将Laravel从5.6升级到6.0。以前,默认的辅助功能在控制器上运行良好,但现在显示为“ 未定义”。在我的控制器中,我使用了以下内容。
$filename = str_random(12);
我遇到以下错误。
消息:“调用未定义的函数 App \ Http \ Controllers \ str_random()“
我还使用了random()
函数,它的意思是相同的。
有人可以指导我该怎么做吗。
我有运行命令,例如:
composer dump-autoload
但是我遇到同样的错误。
答案 0 :(得分:21)
在Laravel 6中,所有str_
和array_
助手都已移至新的laravel/helpers
Composer程序包中,并已从框架中删除。如果需要,您可以更新对这些帮助程序的所有调用,以使用Illuminate\Support\Str
和Illuminate\Support\Arr
类。另外,您可以将新的laravel/helpers
包添加到您的应用程序中,以继续使用这些帮助程序:
composer require laravel/helpers
如果不想添加包,则使用Str
和Arr
类。
例如:
Str::random(12)
答案 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";
}
}