【问题标题】:Followed Laravel Fundamentals tutorial, issue with episode 9 on MVC遵循 Laravel 基础教程,第 9 集在 MVC 上发布
【发布时间】:2019-04-09 12:07:34
【问题描述】:

我目前正在关注 Laravel 基础教程视频,因为我之前尝试过另一个教程,但它没有详细解释 Laravel。

我现在进入第 9 集 (https://laracasts.com/series/laravel-5-fundamentals/episodes/9) 但是,一旦我进入控制器中的 show($id) 函数,我就会收到 findOrFail() 的错误,或者如果我只使用 find() 它根本不会查询并且返回任何东西。

除了将“文章”更改为“帖子”,因为我更喜欢命名。

我真的想在这一点上撞到墙上,因为我不知道为什么会发生这种情况。

我检查了我的所有语法,它似乎是有序的。索引中Article::all(); 的查询也会返回我的数据库表中的数据。

app/Http/Controllers/PostsController.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'));
    }
}

路由/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 Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    protected $fillable = [
        'title',
        'body'
    ];
}

我使用 findOrFail() 时收到的错误

(2/2) NotFoundHttpException
No query results for model [App\Post] 1

in Handler.php line 131

谢谢,希望有人能看出我哪里出错了!

【问题讨论】:

  • 你设置了post表的主键吗?
  • 你能提供刀片文件代码在哪里显示链接?

标签: php laravel


【解决方案1】:

我的表中没有 ID 为“1”的条目

我觉得自己好笨……

【讨论】:

  • 你得到了我的投票+,即使是初学者的错误,你自己也得到了它!继续努力,祝你好运! :) 顺便说一下,Google 关于橡皮鸭调试 =)
  • 只有 laravel 的初学者,只需要注意不要重复使用数据库表:D
【解决方案2】:

如果你为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
  }

【讨论】:

  • 全部排序,参考我的评论
【解决方案3】:

我认为您的数据库表可能没有正确命名。该表应称为“帖子”。如果它被命名为其他名称,则需要在 Post 模型中声明它:

protected $table = "name of your database table";

【讨论】:

  • 不,这不会改变任何东西,应该提到我试过这个。如前所述,它确实连接到数据库并在 index() 函数中显示数据,但是 find($id) 不返回任何内容
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多