You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Laravel 5.2路由中用where约束status参数为指定值?

解决Laravel 5.2路由中限制status参数为特定值的问题

嘿,这个需求很容易实现,有两种简洁的方式可以满足你的要求,咱们一个个来看:

方法1:使用正则表达式精确匹配

你只需要把原来where数组里的status规则改成匹配activate或deactivate的正则分支即可。为了确保参数完全匹配(避免出现类似activatexxx这种不符合的情况),可以加上^和$来限定字符串的首尾:

Route::any('/set-status/{id}/{status}', [ 
    'as'=>'admin_service_category_set_status', 
    'uses'=>'Admin\ServiceCategoryController@set_status'
])->where([
    'id'=> '[0-9]+', 
    'status' => '^(activate|deactivate)$'
]);

方法2:使用whereIn快捷方法(更直观)

Laravel还提供了whereIn方法,不用写正则就能直接指定允许的参数值,代码可读性更高:

Route::any('/set-status/{id}/{status}', [ 
    'as'=>'admin_service_category_set_status', 
    'uses'=>'Admin\ServiceCategoryController@set_status'
])->where('id', '[0-9]+')
  ->whereIn('status', ['activate', 'deactivate']);

两种方法都能达到你的目的:只有当status参数是activate或者deactivate时,路由才会匹配成功,否则会返回404错误。个人更推荐第二种方法,因为不用写正则,代码更清晰易懂~

内容的提问来源于stack exchange,提问作者Saswat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 06:54:18