После обновления 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)

https://laravel.com/docs/master/helpers

Добавьте следующую строковую библиотеку.

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";
        }
    }
Другие вопросы по тегам