对null调用成员函数subjects()



在null上调用成员函数subjects((时遇到错误。我的项目是php和laravel。我的项目在实时服务器上。它正常工作,但当我点击编辑或点击更新按钮时,它会在null上显示对成员函数subjects((的调用。只有我当前的浏览器面临这个错误,但如果我从另一个浏览器访问我的服务器,它似乎是可以的。

公共函数索引((

{
$featured_packages = Package::where('featured_package', 1)
->with('reviews', 'user')
->get();
$popular_packages = Package::where('popular_package', 1)
->with(['class' => function ($query) {
$query->pluck('name');
}, 'reviews', 'user'])
->withCount('mcqs')->get();
$class_id  = StudentClass::all()->random()->id;
if (Auth::check()) {
$class_id = auth()->user()->grad != '' ? auth()->user()->grad : $class_id;
}
$subjects = StudentClass::find($class_id)->subjects()->withCount('packages')->get();
return view('frontend.index', compact('featured_packages', 'popular_packages', 'subjects', 'class_id'));
}
public function about()
{
$about = About::orderBy('id', 'desc')->first();
return view('frontend.about', compact('about'));
}
public function contact()
{
return view('frontend.contact');
}
public function faqs()
{
$faqs = Faq::orderBy('id', 'asc')->where('status', 1)->get()->groupBy('tab');
return view('frontend.faqs', compact('faqs'));

使用findOrFail()而不是find(),或者只使用条件语句进行检查。您的StudentClass::find($class_id)可能为null,因此值得在链接之前进行检查。

首先检查StudentClass是否存在

$studentClass = StudentClass::find($class_id); 
if ($studentClass) {
$subjects = $studentClass->subjects()->withCount('packages')->get(); }

根据Laravel文档,您需要使用如下方法findOrFail()

$subjects = StudentClass::findOrFail($class_id)->subjects()->withCount('packages')->get();

因为如果找不到StudentClass,就不能在null上使用函数subjects()

最新更新