Существует имя в базе данных? Laravel

У меня есть таблица базы данных, называемая categories в этой таблице. У меня есть поля: id, name, description и urlname

Я хочу проверить файл route.php если URL-адрес правильный:

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 в поле urlname в таблице categories?

благодаря

2 ответа

Не создавайте экземпляр объекта 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::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);
});

Несколько советов по программированию... Я бы рекомендовал избегать аббревиатур, чтобы сделать ваш код более понятным ("категория" вместо "кошка"). Я бы также рекомендовал использовать контроллер вместо того, чтобы помещать ваш код в блок function() в ваших route.php. Это поможет вам лучше упорядочить код и сохранить простой файл route.php, но также позволит использовать кеширование маршрута.

licensed under cc by-sa 3.0 with attribution.