Laravel Route::使用where条件获取

Laravel Route::使用where条件获取,laravel,routes,laravel-5.1,Laravel,Routes,Laravel 5.1,我正在开发Laravel 5.1,我有以下代码: //Routes.php Route::get('/listagem/{campo}','ControllerParque@listar'); //ControllerParque.php public function listar($campo) { $listagem = DB::SELECT("SELECT COUNT(x.".$campo.") AS nreg, x.* FROM (SELECT

我正在开发Laravel 5.1,我有以下代码:

//Routes.php
Route::get('/listagem/{campo}','ControllerParque@listar');

//ControllerParque.php
    public function listar($campo) {       
        $listagem = DB::SELECT("SELECT COUNT(x.".$campo.") AS nreg, x.* FROM (SELECT * FROM computadores ORDER BY id DESC) AS x GROUP BY ".$campo." ORDER BY ".$campo." ASC");  
        $dados = array('listagem' => $listagem, 'campo' => $campo);
        return view("ViewListagem")->with($dados);           
    }
我想限制“listagem/usuario”或“listagem/tag”的任何不同之处。我的意思是,如果用户在导航器(URL栏)中键入“listagem/crap”,它将被拒绝,因为它不是“listagem/usuario”或“listagem/tag”

我试过“where”子句:

Routes.php
    Route::get('/listagem/{campo}','ControllerParque@listar')
->where('campo', 'usuario');
但这样我只限制了一个条件,这个例子是'listagem/usuario'


有什么想法吗?

我不确定是否可以通过where完成。相反,您可以在控制器功能中检查它

public function listar($campo) {  
     if(!in_array($campo,['usuario','tag'])) {
          // throw an error, return to previous page
          return Redirect::back()->withErrors('error message here');
     }
     // Continue on with your function
}

我不确定是否可以通过where完成。相反,您可以在控制器功能中检查它

public function listar($campo) {  
     if(!in_array($campo,['usuario','tag'])) {
          // throw an error, return to previous page
          return Redirect::back()->withErrors('error message here');
     }
     // Continue on with your function
}

可以在“where”子句中使用正则表达式<代码>usario |标记仅与
usario
tag


可以在“where”子句中使用正则表达式<代码>usario |标记仅与
usario
tag