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 路由(存储、更新、删除)。

但各有各的。