You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel后端报Target class [0]不存在及非数值警告错误如何解决

问题排查与解决方案

核心触发错误点

你遇到的Target class [0] does not exist和非数值警告,直接原因是关联数组语法错误,Laravel容器在解析参数时把索引数组的数字键当成了类名查找,同时进行数值运算时触发非数值警告。

需修改的代码清单


1. 修复DatabaseController的update数组语法错误

定位到DatabaseController的confirmStaffDatabase方法,将update参数里的逗号替换为关联数组箭头=>:
错误代码:

$result=$database->update([
        'uploadable_id',auth()->user()->id,
        'uploadable_type','App\Models\User'
    ]);

修改为:

$result=$database->update([
        'uploadable_id' => auth()->user()->id,
        'uploadable_type' => 'App\Models\User'
    ]);

2. 修复私有方法调用错误

DatabaseController的saveDatabase方法调用类内私有方法getFile时缺少$this->标识:
错误代码:

$path=getFile($request);

修改为:

$path = $this->getFile($request);

3. 修复响应函数拼写错误

confirmStaffDatabase方法中响应函数拼写错误:
错误代码:

return respone()->json('عملیات موفقانه انجام شد');

修改为:

return response()->json('عملیات موفقانه انجام شد');

4. 补全User模型命名空间导入

DatabaseController和EmployeeController中都使用了User模型,但没有导入对应的命名空间,需要在两个控制器的顶部添加:

use App\Models\User;

可选优化点

DatabaseController的getLastDatabase方法中,如果查询到的用户没有关联数据库,调用max()->id会抛出空对象错误,建议增加非空判断:

private function getLastDatabase(){
    $company=auth()->user()->company;
    $users=User::with('databases')->where([['company',$company],['role','user']])->get();
    $lastDb = $users->map(function($item){
        return $item->databases->last();
    })->filter()->max();
    if (!$lastDb) {
        abort(404, '没有可用的数据库');
    }
    return Database::find($lastDb->id);
}

修改完成后执行php artisan route:clear清空路由缓存即可正常运行。

内容的提问来源于stack exchange,提问作者NA Mah

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 14:45:04