数据库中存在名称?拉拉维尔

Posted

技术标签:

【中文标题】数据库中存在名称?拉拉维尔【英文标题】:Exists name in database? Laravel 【发布时间】:2014-07-11 12:53:26 【问题描述】:

我有一个名为 categories 的数据库表,在该表中我有以下字段:idnamedescriptionurlname

如果url正确,我想检查route.php文件:

Route::get('products/cat' ,function($cat)
    $objCat = new Category;

    if($objCat-> ??? )
        return View::make('products')->with('cat', $cat);
    else
        return View::make('notfound')->with('cat', $cat);
    
);

如何在??? 的位置检查$cat 变量是否存在于categories 表的urlname 字段中?

谢谢

【问题讨论】:

【参考方案1】:

不要实例化 Category 对象。 您可以执行以下操作:

$model = Category::where('id', '=', $cat)->firstOrFail();

并通过重定向注册异常

use Illuminate\Database\Eloquent\ModelNotFoundException;

App::error(function(ModelNotFoundException $e)

    return Response::make('Not Found', 404);
);

这里还有一篇关于laravel中错误处理的文章:http://fideloper.com/laravel4-error-handling

【讨论】:

你能举个route.php文件的例子吗,因为我现在对路由的结构有问题。 这并没有真正达到 OP 想要的效果,因为他们希望在找不到类别的特殊情况下返回一个名为“notfound”的特殊视图。【参考方案2】:

这会做你想做的:

Route::get('products/urlName', function ($urlName) 
    $objCat = Category::where('urlname', $urlName)->first();
    if ($objCat)
         return View::make('products')->with('cat', $objCat);
    else
         return View::make('notfound')->with('cat', $objCat);
);

一些编程风格建议...我建议避免使用缩写以使您的代码更加清晰(“类别”而不是“猫”)。我还建议使用控制器而不是将代码放在 routes.php 中的 function () 块中。这将帮助您更好地组织代码并保持您的 routes.php 文件简单,而且还允许您使用路由缓存。

【讨论】:

以上是关于数据库中存在名称?拉拉维尔的主要内容,如果未能解决你的问题,请参考以下文章

Macroable.php 第 74 行中的 BadMethodCallException:方法保存不存在。拉拉维尔 5.2

拉拉维尔 5.5。工匠命令排队

拉拉维尔 |唯一验证 where 子句

拉拉维尔。测试清除活动数据库

更新或创建行数据库。拉拉维尔

拉拉维尔。在所有路线中保持变化