After upgrading Laravel from 5.6 to 6.0, Call to undefined str_random() function not working
Asked Answered
C

4

44

I have upgraded Laravel from 5.6 to 6.0. Previously, default helper functions were running fine on the controllers, but now it says "undefined." In my controller, I have used the following.

$filename = str_random(12);

I am getting the following error.

message: "Call to undefined function App\Http\Controllers\str_random()"

I have also used the random() function, and it's saying the same thing.

Can somebody please guide me on what to do?.

I have run commands like:

composer dump-autoload

But I get the same error.

Counterscarp answered 30/9, 2019 at 7:36 Comment(4)
As far as I'm concerned str_random() was removed in 5.8, doesn't look like it's supported at all. Try this instead: laravel.com/docs/6.x/helpers#method-str-randomFreethinker
Could you please post where in the documentation it says "those functions" are still supported? laravel.com/docs/6.x/helpers#method-str-random says it's Str::random()Jakob
@kerbholz : hello sir, i am very sorry, i have seen 5.6 documentation in place of 6.0 now i have pull down the top select box and set version as 6.0, not i can see what you have written is rightCounterscarp
Does this answer your question? "Call to undefined function str_slug()" in Laravel 6.0Arid
S
118

Likelihood Of Impact: High Laravel 6 Upgrade Guide

In Laravel 6 All str_ and array_ helpers have been moved to the new laravel/helpers Composer package and removed from the framework. If desired, you may update all calls to these helpers to use the Illuminate\Support\Str and Illuminate\Support\Arr classes. Alternatively, you can add the new laravel/helpers package to your application to continue using these helpers:

composer require laravel/helpers

If don't want to add Package then Used Str And Arr Classes.

For Example :

Str::random(12)

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

Sewoll answered 30/9, 2019 at 7:42 Comment(2)
Str::replace is not there, instead what Can I use? if i want to replace with?Incompetent
use the built-in str_replace function otherwise follow my answer.Sewoll
G
42

Add the following string library.

use Illuminate\Support\Str;

now you can use it as below.

$filename = Str::random(40)

alternatively, install the following package.

composer require laravel/helpers
Graycegrayheaded answered 30/9, 2019 at 7:37 Comment(0)
T
0

In my case, I didn't use any of the string helpers in my app code, so I just had to remove the compiled class file:

php artisan clear-compiled
Thrombophlebitis answered 15/6, 2020 at 7:15 Comment(0)
D
-1

use code ::

<?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";
        }
    }
Dislocate answered 3/10, 2020 at 6:30 Comment(1)
Too much redundant code, sorry.Byyourleave

© 2022 - 2024 — McMap. All rights reserved.