【问题标题】: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
谢谢!

【问题讨论】:

    标签: php mysql laravel laravel-4 laravel-routing


    【解决方案1】:

    是的,有。它被称为Route Model Bindings

    简而言之,您使用Route::bind 函数来定义在评估路由参数时要调用的函数。这是一个简单的例子:

    Route::bind('cat', function($value, $route)
    {
        return Category::where('id', $value)->first();
    });
    

    然后你的处理程序将被传递模型本身而不是路由参数,这非常方便。

    您可以添加简单的逻辑来测试请求的模型是否存在,然后采取适当的措施。常见的方法是在这种情况下抛出NotFoundException,并使用App::missing 方法处理它。有关此主题的更多信息,请参阅here

    【讨论】:

      猜你喜欢
      • 2017-07-06
      • 1970-01-01
      • 2019-12-09
      • 2018-09-22
      • 2015-06-14
      • 2013-11-24
      • 1970-01-01
      • 1970-01-01
      • 2016-06-26
      相关资源
      最近更新 更多