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

Laravel 8 提示Class 'Admin::class' not found错误问题咨询

问题排查及修复方案

错误根因梳理

  • 关联定义语法错误:类名常量::class被错误包裹在引号中,Admin::class本身会返回类的全名字符串,加引号后会被当成普通字符串"Admin::class"查找类,直接触发类不存在报错。
  • Laravel 8命名空间变更:Laravel 5默认模型存放在app/目录,命名空间为App\;Laravel 8开始默认模型存放在app/Models/目录,命名空间为App\Models\,未补全命名空间也会导致类找不到。
  • 关联调用不匹配:Administrations模型中定义的关联方法名为admin(),视图中错误调用为$administration->admins->name,多了后缀s无法匹配关联。
  • 外键字段不统一:Administrations模型$fillable中声明的外键为id_Admin,控制器存储时使用的是id_superAdmin,字段不一致会导致关联查询匹配不到数据。
  • 细节语法错误:Admin模型的users关联定义中User::class多了多余的单引号,控制器中数字类型转换位置错误。

修复后代码

1. 模型代码

Administrations 模型

<?php
namespace App\Models; // 确认和你实际模型存放位置的命名空间一致
use Illuminate\Database\Eloquent\Model;

class Administrations extends Model
{
    protected $fillable = [
        'name',
        'address',
        'number',
        'id_admin' // 统一外键为小写下划线格式
    ];

    // 去掉引号,显式指定外键避免自动映射错误
    public function admin()
    {
        return $this->belongsTo(Admin::class, 'id_admin');
    }
}

Admin 模型

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Model;

class Admin extends Model
{
    protected $fillable = [
        'name',
        'grade',
        'adress',
        'number',
        'id_user'
    ];

    // 去掉多余引号,显式指定外键
    public function user()
    {
        return $this->belongsTo(User::class, 'id_user');
    }
    // 去掉多余引号,显式指定外键
    public function administrations()
    {
        return $this->hasOne(Administrations::class, 'id_admin');
    }
}

2. 控制器代码

public function storefac(Request $request){
    $this->validate($request,[
        "name"=> 'required',
        "number"=>'required',
        "adress"=>'required',
    ]);
    $id=Auth::user()->id;
    $emps=new Administrations;
    $emps->name=$request->input('name');
    $emps->adress=$request->input('adress');
    $emps->number=(int)$request->input('number'); // 修正类型转换位置
    $emps->id_admin=$id; // 和模型声明的外键保持一致
    $emps->save();
    return redirect()->back()->with('success','data saved');
}

3. 视图代码

<thead>
    <tr>
      <th scope="col">name</th>
      <th scope="col">Adress</th>
      <th scope="col">number</th>
      <th scope="col">admin name</th>
    </tr>
</thead>
<tbody>
  @if($administrations)
  @foreach($administrations as $administration)
    <tr>
      <th scope="row">{{$administration->name}}</th>
      <td>{!!$administration->adress!!}</td>
      <td>{{$administration->number}}</td> 
      <!-- 关联名和模型方法保持一致,加??避免关联不存在时报错 -->
      <td>{{$administration->admin->name ?? ''}}</td> 
    </tr>
  @endforeach
  @endif
</tbody>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 10:03:02