数据库中存在名称?拉拉维尔
Posted
技术标签:
【中文标题】数据库中存在名称?拉拉维尔【英文标题】:Exists name in database? Laravel 【发布时间】:2014-07-11 12:53:26 【问题描述】:我有一个名为 categories
的数据库表,在该表中我有以下字段:id
、name
、description
和 urlname
如果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