我的控制器:
public function update(SettingUpdateRequest $request, Setting $id){
$setting = Setting::first();
$setting->update($request->post());
if ($request->hasFile('site_logo')) {
$setting->addMedia($request->site_logo)->toMediaCollection('document');
}
return redirect()
->route('back.setting.index')->withMessage('Ayarlar başarıyla güncellendi!');
}
我的型号:
namespace AppModels;
use IlluminateDatabaseEloquentFactoriesHasFactory;
use IlluminateDatabaseEloquentModel;
use SpatieMediaLibraryHasMedia;
use SpatieMediaLibraryInteractsWithMedia;
class Setting extends Model implements HasMedia
{
use HasFactory , InteractsWithMedia;
protected $table='settings';
protected $fillable=['site_title','site_desc','site_email'];
protected $appends = ['site_logo'];
public function getSiteLogoAttribute()
{
return $this->getMedia('document')->last();
}
}
我在stroge中的图片方式:https://prnt.sc/11q22mc
我的刀片:
<div class="form-group">
<label for="exampleInputFile">Site Logo</label>
<input type="file" id="exampleInputFile" name="site_logo" class="form-control" accept="image/*">
</div>
<label><strong>Resimler:</strong></label>
@if (!$setting->site_logo)
<span class="form-text text-muted">Bu Rehber ile ilgili resim bulunamadı. Yeni bir resim ekleyin!
</span>
@endif
<div class="col-lg-3">
<div class="image-input image-input-empty image-input-outline" id="kt_image_5" style="background-image: url({{$setting->getFirstMediaUrl('document')}})">
<div class="image-input-wrapper"></div>
<span class="btn btn-xs btn-icon btn-circle btn-white btn-hover-text-primary btn-shadow" data-action="cancel" data-toggle="tooltip" title="" data-original-title="Cancel avatar">
<i class="ki ki-bold-close icon-xs text-muted"></i>
</span>
<span class="btn btn-xs btn-icon btn-circle btn-white btn-hover-text-primary btn-shadow" data-action="remove" data-toggle="tooltip" title="" data-original-title="Remove avatar">
</span>
</div>
</div>
我的数据库:https://prnt.sc/11q2b2l
我用空间媒体库更新了图片,但我的图片没有出现
https://prnt.sc/11q2fvi我的控制台故障:https://prnt.sc/11q2k8q
您应该检索刀片中的最后一个介质。由于您已经在模型中定义了getter,所以可以使用以下代码。
{{ $setting->site_logo->getUrl() }}
您应该删除最后一个图像
$setting->media()->delete();
或者你可以使用
$setting->clearMediaCollection('document');