【发布时间】:2013-05-19 13:26:29
【问题描述】:
它必须是数据库表中的 'id' 列吗?
控制器中的 show($id)、edit($id) 方法?
我想将 $id 替换为数据库表中“post_id”列的值,但会引发错误:ModelNotFoundException
我该如何解决?
示例代码:
数据库表:
id(int), post_id(varchar32), post_title(varchar32), post_content(text)
路线:
Route::resource('posts', 'PostsController');
PostsController:
公共函数展示($id) { 返回视图::make('posts.show'); }
当我访问http://localhost/posts/1
它应该返回表中 id 为 1 的帖子的视图。
如果我根据表中的 post_id 值返回视图怎么办?
是否必须替换show()或中的参数?
【问题讨论】:
-
能否添加相关代码?
-
当然,如上添加。
-
你并没有真正使用 $id,你只是在 show 方法中渲染视图。是的,你可以传递任何你需要的东西,你的链接只需要与资源一致:route.show 必须是
http://host/route_name/id-or-anything-else。但是,如果您收到 ModelNotFoundException 是因为 FindOrFail 或 FirstOrFail 正在您的代码中的其他地方使用。我没有看到它们在 Laravel 源代码中使用,它们一定是你的。 -
谢谢!原来 FindOrFail($id) 会在表中查找主键。在我的情况下,我可以通过将 post_id 设置为主键或使用 where ( ) 来检索帖子。你能看看与嵌套控制器相关的另一个问题吗? stackoverflow.com/questions/16633898/…