多态关联一对一,提示对象找不到错误(local.ERROR: Class "" not found)

1. 运行环境

1). 当前使用的 Laravel 版本?

laravel 8

2). 当前使用的 php/php-fpm 版本?

PHP 版本:8.1

php-fpm 版本:8.1

3). 当前系统

Ubuntu 20.4

4). 业务环境

实现多态一对一关联

5). 相关软件版本

2. 问题描述?

在按照文档使用多态1对1关联的时候,报对象找不到的错误。以下是相关代码
数据表结构

snapshot
  id
  body
  snapshotable_type
  snapshotable_id
xiaomai
  id
  name

Snapshot.php

<?php

namespace App\Models;

use Dcat\Admin\Traits\HasDateTimeFormatter;

use Illuminate\Database\Eloquent\Model;

class Snapshot extends Model
{
    use HasDateTimeFormatter;
    protected $table = 'snapshot';

    public function snapshotable()
    {
        return $this->morphTo();
    }

    public function user()
    {
        return $this->belongsTo(User::class);
    }
}

Xiaomai.php

<?php

namespace App\Models;

use Dcat\Admin\Traits\HasDateTimeFormatter;

use Illuminate\Database\Eloquent\Model;

use Illuminate\Support\Facades\Redis;

class Xiaomai extends Model
{
    use HasDateTimeFormatter;
    protected $table = 'xiaomai';

    public function snapshot()
    {
        return $this->morphOne(Snapshot::class, 'snapshotable');
    }
}

执行报错代码

$detail = Snapshot::findOrFail($id);
$detail->snapshotable;

3. 您期望得到的结果?

能实现多态一对一关联

4. 您实际得到的结果?

以下是错误代码

local.ERROR: Class "Xiaomai" not found {"exception":"[object] (Error(code: 0): Class \"Xiaomai\" not found at /var/www/liang-mao-tong-server/vendor/laravel/framework/src/Illuminate/Database/Eloquent/Concerns/HasRelationships.php:750)
[stacktrace]
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
GDDD
最佳答案

建议你把数据库截图也发出来下, 看报错类没找到,检查命名空间对不对。我估计是你数据存的字段值有问题 App\Models\XiaoMai

3年前 评论
(楼主) 3年前
讨论数量: 3
GDDD

建议你把数据库截图也发出来下, 看报错类没找到,检查命名空间对不对。我估计是你数据存的字段值有问题 App\Models\XiaoMai

3年前 评论
(楼主) 3年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!