多态关联一对一,提示对象找不到错误(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]
建议你把数据库截图也发出来下, 看报错类没找到,检查命名空间对不对。我估计是你数据存的字段值有问题 App\Models\XiaoMai