如何从Laravel中的routes.php调用静态函数

时间:2017-09-23 12:26:39

标签: php laravel laravel-5 laravel-4

我试图从已经编写的控制器调用静态函数,我只想重用该函数。

控制器:

public static function getProjectName($project_id){
     $project_obj = new Project();
     $project = $project_obj->find($project_id); 
     return $project->project_name;
}

如果我在同一个控制器或另一个控制器中调用此静态函数,则此代码正常工作。但是我试图从routes.php中调用它,如下所示:

routes.php

Route::get('/get-project-name/{project_id}', 'ProjectController@getProjectName');

我在routes.php中使用上面的代码调用相同的函数,但每次我得到405错误,这是不允许的方法。
如何从Laravel中的路径调用此静态函数

1 个答案:

答案 0 :(得分:2)

使用控制器方法获取数据库值不是一个好主意。

相反,请使用其模型并随时调用模型方法。

class Project extends Model 
{
    public function getProjectName($id)
    {
        $project = $this->find($id);
        return $project ? $project->name : null;
    } 

}

如果你需要静态调用它

class Project extends Model 
{
    public static function getProjectName($id)
    {
        $project = self::find($id);
        return $project ? $project->name : null;
    } 

}

如果你需要在路线中使用它

Route::get('/get-project-name/{id}', function ($id) {
    return Project::getProjectName($id);
});