2015-04-20 3 views
3

У меня есть модель класса с именем article.php и использовать ниже разгромом:Laravel 5 ModelNotFoundException в Builder.php для маршрутизации

Route::get('articles/create','[email protected]'); 

, когда вход в браузере http://localhost:8000/articles/create я вижу эту ошибку: ModelNotFoundException в строке Builder.php 125: Нет результатов запроса для модели [App \ Article].

но когда я пользователь ниже, каждый думаю, это нормально: (статья InstEd статью s)

Route::get('article/create','[email protected]'); 

это мой контроллер:

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'); 
    } 
} 

, что произошло на самом деле !!!

+0

Вы должны включить свой 'ArticleController' –

ответ

13

Проблемы с кодом является то, что в вашем routes.php вашего приоритет маршрута, как это:

Route::get('articles/{id}','[email protected]'); 
Route::get('articles/create','ArticlesControlle[email protected]'); 

и когда вас перейти к http://localhost:8000/articles/create в вашем браузере laravel уловы создают как переменную с {id} запрос в articles/{id} до articles/create получает возможность разрешения маршрута , Для того, чтобы решить вашу проблему необходимо учитывать приоритет маршрута и внести следующие изменения в свой route.php файл:

Route::get('articles/create','[email protected]'); 
Route::get('articles/{id}/edit','[email protected]'); 
Route::get('articles/{id}','[email protected]'); 

Но если у вас есть несколько из них в вашем routes.php файла вы действительно должны рассмотреть вопрос об использовании этого вместо :

Route::resource('articles', 'ArticlesController'); 

Это одна линия будет заботиться обо всех 4 Узнавайте маршруты (индекс, создавать, редактировать, шоу), а также все три столба/положить/удаление маршрутов (магазин, обновление, удаление).

Но каждому свой.

0

Вы должны указать свой код контроллера.

Скорее всего там есть код, который пытается найти findOrFail() на модели Eloquent, вызывая эту ошибку.

+0

Я изучаю laravel в эти дни, и я вижу что-то странное –

0

Я нашел вопрос: в Rout.php У меня есть код ниже:

Route::get('articles/{id}','[email protected]'); 
Route::get('articles/create','[email protected]'); 

и когда я использую http://localhost:8000/articles/create в браузере Laravel передать сотвори 'статью/{ID}' и использовать первый Разгром затем перейти к ArticlesController @ шоу и блекнет «создать» вместо идентификатор, как показывают параметр метода. то не может найти статью с id = create и вернуть исключение;

для задачи решимости должен изменить последовательность маршрутов, как показано ниже:

Route::get('articles/create','[email protected]'); 
Route::get('articles/{id}','[email protected]'); 
Смежные вопросы