遵循Laravel基础教程,在MVC上发行第9集

时间:2019-04-09 00:49:20

标签: php laravel

在我尝试其他教程之前,我目前正在关注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'
    ];
}

谢谢,我希望有人能看到我要去哪里错了!

3 个答案:

答案 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";