How to Call a controller function in another controller Laravel

Updated at 24-Aug-2022, By samar

How to Call a controller function in another controller Laravel

In this session, we will try our hand at solving the "How to Call a controller function in another controller Laravel".

I have a user controller function `getUser()` and i want to call this controller function in home controller function. How can i call a controller function in another controller in Laravel.
  • Call a controller function from another controller in Laravel

    You can easily call a controller function using (new OtherController)->method() in another controller by importing controller class with use App\Http\Controllers\UserController; after namespace in controller.

    Syntax for calling controller method.

    $result = (new OtherController)->method();
    

    Example code:

    app\Http\Controllers\UserController.php

    <?php
    
    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    use App\Models\User;
    
    class UserController extends Controller
    {
        public function getUser(){
            return User::first();
        }
    }
    

    app\Http\Controllers\HomeController.php

    <?php
    
    namespace App\Http\Controllers;
    use Illuminate\Http\Request;
    use App\Http\Controllers\UserController;
    
    class HomeController extends Controller
    {
        public function getUserFromUserControllerMethod(){
            $result = (new UserController)->getUser();
            print_r($result);
        }
    }
    

    routes\web.php

    Route::get('/get-user', [HomeController::class, 'getUserFromUserControllerMethod']);
    

    Output:

    App\Models\User Object ( [fillable:protected] => Array ( [0] => name [1] => email [2] => password [3] => username ) [hidden:protected] => Array ( [0] => password [1] => remember_token ) [casts:protected] => Array ( [email_verified_at] => datetime ) [connection:protected] => mysql [table:protected] => users [primaryKey:protected] => id [keyType:protected] => int [incrementing] => 1 [with:protected] => Array ( ) [withCount:protected] => Array ( ) [preventsLazyLoading] => [perPage:protected] => 15 [exists] => 1 [wasRecentlyCreated] => [escapeWhenCastingToString:protected] => [attributes:protected] => Array ( [id] => 1 [name] => Mr. Jay Price Jr. [email] => [email protected] [email_verified_at] => 2022-03-03 11:01:39 [password] => $2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi [remember_token] => q0i9UhitUF [username] => [created_at] => 2022-03-03 11:01:39 [updated_at] => 2022-03-03 11:01:39 ) [original:protected] => Array ( [id] => 1 [name] => Mr. Jay Price Jr. [email] => [email protected] [email_verified_at] => 2022-03-03 11:01:39 [password] => $2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi [remember_token] => q0i9UhitUF [username] => [created_at] => 2022-03-03 11:01:39 [updated_at] => 2022-03-03 11:01:39 ) [changes:protected] => Array ( ) [classCastCache:protected] => Array ( ) [attributeCastCache:protected] => Array ( ) [dates:protected] => Array ( ) [dateFormat:protected] => [appends:protected] => Array ( ) [dispatchesEvents:protected] => Array ( ) [observables:protected] => Array ( ) [relations:protected] => Array ( ) [touches:protected] => Array ( ) [timestamps] => 1 [visible:protected] => Array ( ) [guarded:protected] => Array ( [0] => * ) [rememberTokenName:protected] => remember_token [accessToken:protected] => )
  • Call controller from another controller

    $users = app('App\Http\Controllers\UserController')->getUser();

Back to code snippet queries related laravel