【发布时间】:2020-04-15 01:37:51
【问题描述】:
我正在尝试为两个模型创建路由模型绑定:“用户”和“文章”
Route::get('/{user}', 'UsersController@show');
Route::get('/{article}', 'ArticlesController@show');
问题是,其中一个总是优先于另一个,具体取决于它们的声明顺序。
如果用户和文章碰巧有相同的路由,我希望用户路由优先于文章路由,但问题是 laravel 在不匹配用户时返回 404 页面,即使路由应该匹配一篇文章。
我知道您可以为此使用带有正则表达式的 where() 函数,但是这两个模型都对路由键名称使用相同的结构(它们都是字符串)。我可以让正则表达式搜索数据库列或其他内容吗?
【问题讨论】:
-
选择
/users/{user}和/articles/{article}这样的路线是个不错的主意。它不仅可以防止这种情况发生,还可以帮助用户了解他们当前的位置。加上调试。 -
我同意这是最好的。不幸的是,我的客户希望这样 :)
-
向他解释与应用该方法相关的技术问题。我完全同意@ThomasVanderVeen 所说的话。但是,如果您想继续这样做。您可以在控制器中解决问题。
标签: php laravel route-model-binding