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,会出现以下错误之一。 -
- 检查您在 BlogPost 中使用的导入路径。还要检查关联。
- 检查您在 BlogPostCategory 模型中使用的导入路径。
只需要修改路径,清空缓存,错误就可以解决
创建新的 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 classApp\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,会出现以下错误之一。 -
- 检查您在 BlogPost 中使用的导入路径。还要检查关联。
- 检查您在 BlogPostCategory 模型中使用的导入路径。
只需要修改路径,清空缓存,错误就可以解决