Class "App\Models\BlogPostCategory" 在 Laravel 8 中找不到

Class "App\Models\BlogPostCategory" not found in Laravel 8

创建新的 post 后,我希望它将页面重定向到 post 的列表。它正在成功创建它,并且数据正确地插入到数据库中,但是当它重定向时,我得到了这个错误,并且相同的 class 在同一个控制器中的作者函数中工作。

博客控制器

namespace App\Http\Controllers\Backend;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use App\Models\Blog\BlogPostCategory;
use Carbon\Carbon;
use App\Models\BlogPost;
use Image;

class BlogController extends Controller
{
    public function BlogPostStore(Request $request)
    {
        $request->validate([
            'post_title_en' => 'required',
            'post_title_ar' => 'required',
            'post_image' => 'required',
        ], [
            'post_title_en.required' => 'Input Post Title English Name',
            'post_title_ar.required' => 'Input Post Title Arabic Name',
        ]);

        $image = $request->file('post_image');
        $name_gen = hexdec(uniqid()).'.'.$image->getClientOriginalExtension();
        Image::make($image)->resize(780, 433)->save('upload/post/'.$name_gen);
        $save_url = 'upload/post/'.$name_gen;

        BlogPost::insert([
            'category_id' => $request->category_id,
            'post_title_en' => $request->post_title_en,
            'post_title_ar' => $request->post_title_ar,
            'post_slug_en' => strtolower(str_replace(' ', '-', $request->post_title_en)),
            'post_slug_ar' => str_replace(' ', '-', $request->post_title_ar),
            'post_image' => $save_url,
            'post_details_en' => $request->post_details_en,
            'post_details_ar' => $request->post_details_ar,
            'created_at' => Carbon::now(),
        ]);

        $notification = array(
            'message' => 'Blog Post Inserted Successfully',
            'alert-type' => 'success'
        );

        return redirect()->route('list.post')->with($notification);
    }
}

Pposts BlogController 中的列表函数*

public function ListBlogPost()
{
    $blogpost = BlogPost::with('category')->latest()->get();
    
    return view('backend.blog.post.post_list', compact('blogpost'));
}

路线

Route::prefix('blog')->group(function(){
    Route::get('/list/post', [BlogController::class, 'ListBlogPost'])
        ->name('list.post');
    Route::post('/post/store', [BlogController::class, 'BlogPostStore'])
        ->name('post-store');
});

并在路径

中创建 BlogPostCategory class
App\Models\Blog\BlogPostCategory;

问题很可能是由于 App\Models\BlogPost 模型中的关系定义造成的。

我认为您的 App\Models\BlogPost 模型中有一个 category 方法;

public function category()
{
    return $this->belongsTo(BlogPostCategory::class);
}

所以它在同一个命名空间中寻找 BlogPostCategory 但是因为你的 BlogPostCategory 的完整路径是 App\Models\Blog\BlogPostCategory 你需要指定它。

在您的 App\Models\BlogPost class 之上添加 use App\Models\Blog\BlogPostCategory;

<?php

namespace App\Models;

use App\Models\Blog\BlogPostCategory;
//    other classes

class BlogPost extends Model
{
    // other stuff

    public function category()
    {
        return $this->belongsTo(BlogPostCategory::class);
    }
}

@ALAA ELDIN,会出现以下错误之一。 -

  1. 检查您在 BlogPost 中使用的导入路径。还要检查关联。
  2. 检查您在 BlogPostCategory 模型中使用的导入路径。

只需要修改路径,清空缓存,错误就可以解决