Laravel 4,检查数据库中是不是存在路由参数
Posted
技术标签:
【中文标题】Laravel 4,检查数据库中是不是存在路由参数【英文标题】:Laravel 4, Check of route parameter exist in databaseLaravel 4,检查数据库中是否存在路由参数 【发布时间】:2014-07-21 16:55:45 【问题描述】:我想检查名为categories
的数据库表中是否存在路由参数,该表中有两列:
------------------
| categories |
------------------
| id | integer |
| name | varchar |
------------------
我现在也有路线:
Route::Get('shop/cat', function($cat)
return View::make('products')->with('cat', $cat);
);
有没有一个laravel函数可以检查表中是否存在类别id$cat
?
如果它不存在,我想重定向到路由homepage
。否则我想返回视图:products
谢谢!
【问题讨论】:
【参考方案1】:是的,有。它被称为Route Model Bindings。
简而言之,您使用Route::bind
函数来定义在评估路由参数时要调用的函数。这是一个简单的例子:
Route::bind('cat', function($value, $route)
return Category::where('id', $value)->first();
);
然后你的处理程序将被传递模型本身而不是路由参数,这非常方便。
您可以添加简单的逻辑来测试请求的模型是否存在,然后采取适当的措施。常见的方法是在这种情况下抛出NotFoundException
,并使用App::missing
方法处理它。有关此主题的更多信息,请参阅here。
【讨论】:
以上是关于Laravel 4,检查数据库中是不是存在路由参数的主要内容,如果未能解决你的问题,请参考以下文章
当 Route::fallback 存在时检查路由是不是存在