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

Laravel出现Target class [App\Http\Controllers\User]不存在报错求解决方案

问题根因

你遇到的报错本质是两个问题叠加导致的:

  1. 你的UploadController的update方法中,第二个参数声明了User $id的类型约束,但你没有在控制器顶部引入User模型的命名空间,Laravel默认会在当前控制器所属的App\Http\Controllers命名空间下查找User类,自然找不到对应类就抛出了该报错。
  2. 逻辑层面也存在错误:你路由中的{id}是待更新歌曲的ID,和用户模型完全无关,这里不应该使用User类型做参数约束。

解决方案

按以下步骤修改即可修复问题:

  • 第一步:调整UploadController的update方法参数,移除错误的User类型约束,改为普通数值类型即可,同时确认控制器顶部已经引入了需要的依赖类,修改后代码参考:
// 以下两行如果控制器顶部没加的话需要先补上
use Illuminate\Http\Request;
use Illuminate\Support\Facades\DB;

public function update(Request $request, int $id)
{   
    $songname = $request->input('song_title');
    $songartist = $request->input('song_artist');
    $songalbum = $request->input('song_album');
    DB::update('update music_uploads set filename = ?, artistname = ?, albumname = ? where id =?', [$songname, $songartist, $songalbum,$id]);
    echo "Updated successfully <br>";
    echo '<a href="/ngsongs">Click here to return</a>';
}
  • 第二步:修改完成后执行命令清理路由缓存即可,开发环境不要用route:cache(这个命令是生成缓存的,开发阶段路由频繁变动用了反而会有问题),直接执行php artisan route:clear清理旧缓存即可。

可选优化

如果你已经创建了对应music_uploads表的模型(比如App\Models\MusicUpload),可以直接用Laravel的隐式模型绑定简化代码,不需要手写SQL:

// 控制器顶部引入对应模型
use App\Models\MusicUpload;

public function update(Request $request, MusicUpload $id)
{   
    $id->update([
        'filename' => $request->input('song_title'),
        'artistname' => $request->input('song_artist'),
        'albumname' => $request->input('song_album')
    ]);
    echo "Updated successfully <br>";
    echo '<a href="/ngsongs">Click here to return</a>';
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 06:15:04