Laravel 5 Builder.php 中用于路由的 ModelNotFoundException
Laravel 5 ModelNotFoundException in Builder.php for Routing
我有一个名为 Article.php 的模型 Class
并使用以下溃败:
Route::get('articles/create','ArticlesController@create');
在浏览器中输入时 http://localhost:8000/articles/create
我看到这个错误:
ModelNotFoundException Builder.php 第 125 行:没有模型 [App\Article].
的查询结果
但是当我下面的用户都觉得还可以:(文章转为文章s)
Route::get('article/create','ArticlesController@create');
这是我的控制器:
class ArticlesController extends Controller {
public function index()
{
$articles = Article::all();
return view('articles.index',compact('articles'));
}
public function show($id)
{
$article = Article::findOrFail($id);
return view('articles.show',compact('article'));
}
public function create()
{
return view('articles.create');
}
}
到底发生了什么?!!!
您应该包括您的控制器代码。
很可能那里有一些代码在 Eloquent 模型上尝试 findOrFail(),触发了这个错误。
你的代码的问题是在你的 routes.php 你的路由优先级是这样的:
Route::get('articles/{id}','ArticlesController@show');
Route::get('articles/create','ArticlesController@create');
并且当您在浏览器中转到 http://localhost:8000/articles/create 时,laravel 捕获在 [=14= 中使用 {id}
请求创建为变量] 在 articles/create
获得解决路线的机会之前。要解决您的问题,您必须考虑路由优先级并对 route.php 文件进行以下更改:
Route::get('articles/create','ArticlesController@create');
Route::get('articles/{id}/edit','ArticlesController@show');
Route::get('articles/{id}','ArticlesController@show');
但是如果你的 routes.php 文件中有一堆这样的文件,你真的应该考虑改用这个:
Route::resource('articles', 'ArticlesController');
这一行将处理所有 4 个获取路由(索引、创建、编辑、显示)以及所有三个 post/put/delete 路由(存储、更新、删除)。
但各有各的。
我有一个名为 Article.php 的模型 Class 并使用以下溃败:
Route::get('articles/create','ArticlesController@create');
在浏览器中输入时 http://localhost:8000/articles/create 我看到这个错误: ModelNotFoundException Builder.php 第 125 行:没有模型 [App\Article].
的查询结果但是当我下面的用户都觉得还可以:(文章转为文章s)
Route::get('article/create','ArticlesController@create');
这是我的控制器:
class ArticlesController extends Controller {
public function index()
{
$articles = Article::all();
return view('articles.index',compact('articles'));
}
public function show($id)
{
$article = Article::findOrFail($id);
return view('articles.show',compact('article'));
}
public function create()
{
return view('articles.create');
}
}
到底发生了什么?!!!
您应该包括您的控制器代码。
很可能那里有一些代码在 Eloquent 模型上尝试 findOrFail(),触发了这个错误。
你的代码的问题是在你的 routes.php 你的路由优先级是这样的:
Route::get('articles/{id}','ArticlesController@show');
Route::get('articles/create','ArticlesController@create');
并且当您在浏览器中转到 http://localhost:8000/articles/create 时,laravel 捕获在 [=14= 中使用 {id}
请求创建为变量] 在 articles/create
获得解决路线的机会之前。要解决您的问题,您必须考虑路由优先级并对 route.php 文件进行以下更改:
Route::get('articles/create','ArticlesController@create');
Route::get('articles/{id}/edit','ArticlesController@show');
Route::get('articles/{id}','ArticlesController@show');
但是如果你的 routes.php 文件中有一堆这样的文件,你真的应该考虑改用这个:
Route::resource('articles', 'ArticlesController');
这一行将处理所有 4 个获取路由(索引、创建、编辑、显示)以及所有三个 post/put/delete 路由(存储、更新、删除)。
但各有各的。