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 存在时检查路由是不是存在

如何检查路由“URL”是否存在?

Laravel:检查记录ID是不是存在

检查行是不是存在,Laravel

如何检查记录是不是已经存在,然后在 laravel 中更新或插入?

如何使用where关键字检查Laravel 5.2路由中的状态参数?