我正在使用 MySQL (XAMPP) 数据库,我已将其链接到 Laravel 文件夹的 .env 文件中。我正在尝试使用数据库在 posts.index 页面上显示“博客文章”,并且它在 Visual Studio 代码中没有显示任何错误,但是当我在浏览器中转到该页面时,它显示此错误:
找不到错误类“app\Models\BlogPost”http://laravel.test/posts
帖子控制器
class PostsController extends Controller
{
public function index()
{
return view('posts.index', ['posts' => BlogPost::all()]);
}
public function show($id)
{
// abort_if(!isset($this->posts[$id]), 404);
return view('posts.show', ['post' => BlogPost::findorFail($id)]);
}
}
博客文章模型
class BlogPost extends Model
{
use HasFactory;
}
更新:我现在遇到的问题是我看到了项目数组。 (我是 Laravel 初学者,所以我并不总是看到代码中的问题)。
这是post.index代码:
@extends('layouts.app')
@section('title', 'Blog Posts')
@section('content')
{{-- @each('posts.partials.post', $posts, 'post') --}}
@dd($posts)
@forelse ($posts as $key => $post)
@include('posts.partials.post', [])
@empty
No posts found!
@endforelse
@endsection
这是我在浏览器中看到的内容(而不是数据库中的内容)
#items: array:1 [▼
0 => App\Models\BlogPost {#1233 ▼
#connection: "mysql"
#table: "blog_posts"
#primaryKey: "id"
#keyType: "int"
+incrementing: true
#with: []
#withCount: []
+preventsLazyLoading: false
#perPage: 15
+exists: true
+wasRecentlyCreated: false
#escapeWhenCastingToString: false
#attributes: array:5 [▶]
#original: array:5 [▶]
#changes: []
#casts: []
#classCastCache: []
#attributeCastCache: []
#dates: []
#dateFormat: null
#appends: []
#dispatchesEvents: []
#observables: []
#relations: []
#touches: []
+timestamps: true
#hidden: []
#visible: []
#fillable: []
#guarded: array:1 [▶]
}
]
#escapeWhenCastingToString: false
}
你的代码看起来不错。可能是 BlogPost 模型中的命名空间存在问题。
如果您在 PostsController 控制器中使用此代码作为类别模型:
使用 App\Models\BlogPost ; 那么你的 BlogPost 模型本身就有这个命名空间
命名空间 App\Models; 检查您的模型名称空间是否仍然存在。
这是因为刀片中使用了
@dd($posts)
。直接删除@dd($posts)
。
我想你可以尝试: Use 语句:如果您尝试在控制器或其他类中使用 BlogPost 模型,请确保文件顶部有正确的 use 语句。
使用App\Models\BlogPost;