#php #laravel
#php #laravel
Вопрос:
В настоящее время я просматриваю обучающие видеоролики по основам Laravel, поскольку я пробовал другой учебник раньше, но он не объяснял Laravel так подробно.
Теперь я перехожу к эпизоду 9 (https://laracasts.com/series/laravel-5-fundamentals/episodes/9 ) однако, как только я получаю доступ к show($id)
функции в моем контроллере, я получаю ошибки, findOrFail()
или если я просто использую find()
ее, она просто ничего не запрашивает и не возвращает.
Я в значительной степени следовал руководству, кроме изменения «Статей» на «Сообщения», поскольку я предпочитал именование.
Честно говоря, на данный момент я хочу ударить головой о стену, поскольку понятия не имею, почему это происходит.
Я проверил весь свой синтаксис, и, похоже, все в порядке. Также запрос для Article::all();
in the index возвращает данные из моей таблицы DB.
app/Http/Controllers/PostsController.php
<?php
namespace AppHttpControllers;
use AppPost;
use IlluminateHttpRequest;
class PostsController extends Controller
{
public function index()
{
$posts = Post::all();
return view('posts.index', compact('posts'));
}
public function show($id)
{
$post = Post::findOrFail($id);
return view('posts.show', compact('post'));
}
}
routes/web.php
<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', 'PagesController@index');
Route::get('contact', 'PagesController@contact');
Route::get('posts', 'PostsController@index');
Route::get('posts/{id}', 'PostsController@show');
app/Post.php
<?php
namespace App;
use IlluminateDatabaseEloquentModel;
class Post extends Model
{
protected $fillable = [
'title',
'body'
];
}
Ошибка, которую я получаю при использовании findOrFail()
(2/2) NotFoundHttpException
No query results for model [AppPost] 1
in Handler.php line 131
Спасибо, я надеюсь, что кто-нибудь увидит, где я ошибаюсь!
Комментарии:
1. Вы установили первичный ключ таблицы post?
2. можете ли вы предоставить код блейд-файла, где находится ссылка для показа?
Ответ №1:
В моей таблице не было записи с идентификатором ‘1’
Я чувствую себя таким тупым…
Комментарии:
1. Вы получили мой голос , даже если это ошибка начинающих, вы сделали это сами! Продолжайте в том же духе и удачи! 🙂 Кстати, Google об отладке Rubber duck =)
2. Только новичок в laravel, просто нужно отметить, чтобы не использовать таблицы базы данных повторно: D
Ответ №2:
Если вы задали первичный ключ идентификатора для post
таблицы :
app/Post.php
<?php
namespace App;
use IlluminateDatabaseEloquentmodel;
/**
*
*/
class Post extends Model
{
protected $primaryKey = 'id';
public $timestamps = false;
protected $table = 'post'; //your table name
}
Комментарии:
1. Все отсортировано, см. Мой комментарий
Ответ №3:
Я думаю, возможно, что ваша таблица базы данных названа неправильно. Таблица должна называться «сообщения». Если он назван как-то иначе, вам нужно объявить его в своей модели Post:
protected $table = "name of your database table";
Комментарии:
1. Нет, это ничего не меняет, стоило упомянуть, что я пробовал это. Как указано, он подключается к базе данных и отображает данные в функции index(), однако find($ id) ничего не возвращает