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

Laravel 11单文件多类报错:'users'类未找到,求解决

问题:Laravel 11调用users控制器方法时提示「Class 'users' not found」

项目代码如下:

app\Models\categories.php

<?pp
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class categories extends Model
{
    use HasFactory;
 
}

class users extends Model
{
    use HasFactory;
 
}

app\Http\Controllers\category.php

<?php
namespace App\Http\Controllers;
use Illuminate\Database\Eloquent\ModelNotFoundException;

use App\Models\categories;
 
class category
{
    public static function category_list()
    {
        $posts = categories::all();
        return($posts);
    }

    public static function single_data($ret_dat)
    {
        $posts1 = categories::where('id','>',$ret_dat)->firstOrFail();
        return($posts1);
    }
}

class users
{
    public static function users_list()
    {
        $user_list = users::all();
        return($user_list);
    }
}

resources\views\category.blade.php

<?php

use App\Http\Controllers\category;

$users = users::users_list();
echo "Full Users <br>";
foreach($users as $users_li)
{
  echo $users_li->id." -- ".$users_li->name;
}

问题原因及解决方案

错误根源是类名/文件名不符合PSR-4自动加载规范、命名空间未正确引入、类调用时未指定命名空间,以下是分步修复方案:

  1. 修正类名与文件名(遵循PSR-4规范)
    Laravel严格遵循PSR-4,要求类名使用大驼峰,文件名与类名完全一致:

    • 将模型文件 app\Models\categories.php 重命名为 Categories.php,类名改为 Categories
    • 将原模型文件中嵌套的 users 类拆分到单独文件 app\Models\Users.php,类名改为 Users
    • 将控制器文件 app\Http\Controllers\category.php 重命名为 CategoryController.php,类名改为 CategoryController;拆分嵌套的 users 类到单独文件 app\Http\Controllers\UserController.php,类名改为 UserController
  2. 修复控制器中的命名空间与模型引入
    修改 UserController.php 内容:

    <?php
    namespace App\Http\Controllers;
    
    use App\Models\Users; // 引入正确的模型类
    
    class UserController
    {
        public static function users_list()
        {
            $user_list = Users::all(); // 使用规范的模型类名
            return $user_list;
        }
    }
    
  3. 修正视图中的调用代码
    修改 resources/views/category.blade.php,引入正确的控制器命名空间并调用:

    <?php
    use App\Http\Controllers\UserController; // 引入UserController
    
    $users = UserController::users_list();
    echo "Full Users <br>";
    foreach($users as $users_li)
    {
      echo $users_li->id." -- ".$users_li->name;
    }
    
  4. 修复模型文件语法错误
    原模型文件第一行的 <?pp 是错误标签,需修正为标准PHP起始标签 <?php

补充说明

  • Laravel不建议在单个文件中定义多个类,拆分类到单独文件能避免自动加载冲突
  • 遵循PSR-4规范可以避免绝大多数类找不到的问题
  • 控制器建议继承 Illuminate\Routing\Controller 基类,以获得Laravel控制器的完整功能

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 10:05:08