После обновления Laravel с 5.6 до 6.0 функция Call to undefined str_random() не работает
Я обновил Laravel с 5.6 до 6.0. Раньше вспомогательные функции по умолчанию нормально работали на контроллерах, но теперь он говорит "undefined". В своем контроллере я использовал следующее.
$filename = str_random(12);
Я получаю следующую ошибку.
сообщение: "Вызов неопределенной функции App\Http\Controllers\str_random()"
Я также использовал random()
функция, и он говорит то же самое.
Может кто-нибудь посоветовать мне, что делать?
Я выполнял такие команды, как:
composer dump-autoload
Но я получаю ту же ошибку.
3 ответа
Вероятность воздействия: Руководство по обновлению High Laravel 6
В Laravel 6 Все str_
а также array_
помощники были перемещены в новый laravel/helpers
Пакет Composer и удален из фреймворка. При желании вы можете обновить все вызовы этих помощников, чтобы использоватьIlluminate\Support\Str
а также Illuminate\Support\Arr
классы. В качестве альтернативы вы можете добавить новыйlaravel/helpers
package в ваше приложение, чтобы продолжить использование этих помощников:
composer require laravel/helpers
Если не хотите добавлять пакет, то используется Str
А также Arr
Классы.
Например:
Str::random(12)
Добавьте следующую строковую библиотеку.
use Illuminate\Support\Str;
теперь вы можете использовать его, как показано ниже.
$filename = Str::random(40)
в качестве альтернативы установите следующий пакет.
composer require laravel/helpers
В моем случае я не использовал никаких помощников по строкам в своем коде приложения, поэтому мне просто пришлось удалить скомпилированный файл класса:
php artisan clear-compiled
Использовать код::
<?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";
}
}