我跑Laravel 5.4。
我有这些路线:
<?php
Route::get('/users/{name}', 'UsersController@showByText')->where('name', '[\w]+');
Route::get('/users/{id}', 'UsersController@showById')->where('id', '[\d]+');
?>
我的控制员:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class DashboardController extends Controller
{
function showByText($name)
{
return DB::table('users')->where('name', 'LIKE', $name)->get();
}
function showById($id)
{
return DB::table('users')->where('id', $id)->get();
}
}
?>
问题:
我能否以一种方法结束:
<?php
Route::get('/users/{mixed}', 'UsersController@show');
?>
我的控制器看起来像:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class DashboardController extends Controller
{
function show()
{
if( Request::match('mixed', '[\w]+') )
{
return DB::table('users')->where('name', 'LIKE', $mixed)->get();
}
else if( Request::match('mixed', '[\d]+') )
{
return DB::table('users')->where('id', $mixed)->get();
}
}
}
?>
我知道Request::match()
不存在,并且知道Route::pattern('id', '[\d]+');
会强制我的方法show
仅符合数字。我想知道preg_match()
组件是否有Request
的简写。