在我尝试其他教程之前,我目前正在关注Laravel基础教程视频,但是并没有对Laravel进行详尽的解释。
我现在进入第9集(https://laracasts.com/series/laravel-5-fundamentals/episodes/9),但是一旦进入控制器中的show($id)
函数,我就会遇到findOrFail()
的错误,或者如果我只是使用{{1} }它只是不查询并返回任何内容。
除了我将命名从“ Articles”更改为“ Posts”之外,我对本教程的使用非常接近T。
老实说,我现在想砸墙,因为我不知道为什么会这样。
我已经检查了所有语法,而且看起来似乎是有条不紊的。索引中对find()
的查询也从我的数据库表返回数据。
app / Http / Controllers / PostsController.php
Article::all();
routes / web.php
<?php
namespace App\Http\Controllers;
use App\Post;
use Illuminate\Http\Request;
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'));
}
}
app / Post.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');
使用findOrFail()时收到的错误
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Post extends Model
{
protected $fillable = [
'title',
'body'
];
}
谢谢,我希望有人能看到我要去哪里错了!
答案 0 :(得分:1)
我的表中没有ID为'1'的条目
我觉得很蠢...
答案 1 :(得分:0)
如果您为post
表设置id的主键:
app / Post.php
<?php
namespace App;
use Illuminate\Database\Eloquent\model;
/**
*
*/
class Post extends Model
{
protected $primaryKey = 'id';
public $timestamps = false;
protected $table = 'post'; //your table name
}
答案 2 :(得分:-1)
我认为您的数据库表可能命名不正确。该表应称为“帖子”。如果它被命名为其他名称,则需要在Post模型中声明它:
protected $table = "name of your database table";