我刚刚开始学习laravel,我希望将这个框架与它的优点结合起来。我问这个问题是用laravel来学习正确的方法。
它正在打印帖子表中的帖子,该表格具有相同的id和$ id。
<?php
class PostsController extends BaseController{
public function singlePost($id)
{
$thePost = Posts::find($id);
return View::make('singlePost')->with('thePost', $thePost);
}
}
通常我会检查是否有一个id等于$ id的帖子,如果是,则返回视图等等。是不是有更好的方法来使用laravel,就像你可以使用路由过滤器。
不久,
答案 0 :(得分:1)
路线模型绑定可能是一个选项,但更通用的解决方案是findOrFail
findOrFail
将返回模型或抛出ModelNotFoundException
,它将显示为404页。
$thePost = Posts::findOrFail($id);
return View::make('singlePost')->with('thePost', $thePost);
要检查是否存在,您可以使用find
,然后与null
进行比较:
$thePost = Posts::find($id);
if($thePost != null){
// post exists
}
或更简单,只是 truthy 值:
$thePost = Posts::find($id);
if($thePost){
// post exists
}
答案 1 :(得分:0)
请参阅文档中的"Route Model Binding"。
Route::model('post', 'Post', function() {
// do something if Post is not found
throw new NotFoundHttpException;
});
Route::get('post/{post}', function(Post $post) {
return View::make('singlePost')->with('thePost', $post);
});
您也可以在代码中将find()
替换为findOrFail()
,这会导致使用该ID找不到帖子的例外。