在另一个控制器中调用控制器

时间:2016-12-08 10:16:37

标签: php laravel laravel-5.3

我有PermissionController permission()函数,如下所示,我想在另一个控制器中调用permission()函数。如何将我的permission()功能调用到另一个控制器?

这是我的PermissionController

class PermissionController extends Controller
{
    public function permission(){
    $checkPermission = User::leftJoin('employees', 'employees.user_id', '=', 'users.id')
    ->leftJoin('positions', 'employees.position_id', '=', 'positions.id')
    ->leftJoin('divisions', 'employees.division_id', '=', 'divisions.id')
    ->where(function($query){
        $query->where('division_name', 'Sales')
                ->orWhere('division_name', '=', 'Project Management')
                ->orWhere('position_name', '=', 'Dept Head');
    })
    ->get();

    }   
}

5 个答案:

答案 0 :(得分:2)

创建新的帮助程序(例如PermissionHelper.php),然后将功能移到它并使用它来调用它:

PermissionHelper::permission();

希望这有帮助。

答案 1 :(得分:1)

我认为您的功能应该在您的某个模型中,因为您只获得了价值。

根据MVC,这将更具相关性。

将它放在User模型中,只需一次调用即可在应用程序的每个实例上使用它。

答案 2 :(得分:1)

你可以调用另一个控制器的方法,但这是一种可怕的做法。将代码移动到模型并使用以下命令调用它:

class PermissionController extends Controller
{
    public function permission()
    {
        $checkPermission = User::getEmployeePermissions();
    }
}

在其他控制器中执行相同的操作'方法

答案 3 :(得分:1)

您可以通过以下方式调用PermissionController的“权限”方法:

app(PermissionController::class)->permission();

但是,请注意,此方法根本不是

您可以使用多种重构选项,包括使用辅助类,相关模型上的方法或使用laravel作业。

答案 4 :(得分:1)

尝试这样做

http://$host/job/$jobname/lastUnstableBuild/api/json

调用任何类似的方法

public function __construct(PermissionController $permission_controller)
{
  parent::__construct();
  $this->permission_controller = $permission_controller;
}