orm中访问器跟关系起冲突怎么解决
查询媒体附件信息
$medium = CasesMedia::query()->find(1);
dd($medium->thumbAttachment);
获取不到数据,后来发现定义了getThumbAttribute
访问器, 在ORM关系中数据被修改了,无法查询到
模型定义
<?php
namespace App\Models;
use Illuminate\Support\Facades\Storage;
class CasesMedia extends BaseModel
{
protected $table = 'cases_media';
protected $guarded = [];
protected $primaryKey = 'id';
/**
* 设置缩略图完整路径
* @param $url
* @return string
*/
public function getThumbAttribute($url): string
{
return config('filesystems.disks.his.driver') == 'local' ? tenant_asset($url) : Storage::disk('his')->url($url);
}
/**
* 设置媒体文件完整路径
* @param $url
* @return string
*/
public function getFilePathAttribute($url): string
{
return config('filesystems.disks.his.driver') == 'local' ? tenant_asset($url) : Storage::disk('his')->url($url);
}
/**
* 缩略图附件
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function thumbAttachment()
{
return $this->belongsTo(Attachment::class, 'thumb', 'file_path')
->where('model_id', $this->cases_id);
}
/**
* 大图附件
* @return \Illuminate\Database\Eloquent\Relations\BelongsTo
*/
public function filePathAttachment()
{
return $this->belongsTo(Attachment::class, 'file_path', 'file_path')
->where('model_id', $this->cases_id);
}
}
那就不用模型访问器
实现类似访问器 & 保留
原
字段数据: 使用 View Presenter 模式管理自定义属性最后应该是这样:
$medium->presenter->thumbAttachment