【问题标题】:Laravel package error on file uploading using Spatie\MediaLibrary使用 Spatie\MediaLibrary 上传文件时 Laravel 包错误
【发布时间】:2020-01-26 19:11:20
【问题描述】:

我只是尝试使用 Spatie\MediaLibrary 包将图像上传到服务器。然后 laravel 给出了这个找不到函数的错误。我尝试了所有没有人工作的解决方案

这是我正在使用的代码

> public function update(Request $request, Channel $channel)
>     {
>        if($request->hasFile("image")){
>          $channel->addAllMediaFromRequest('image')->toMediaCollection('images');
>        }
>     }

use Spatie\MediaLibrary\HasMedia\HasMedia;
use Spatie\MediaLibrary\HasMedia\HasMediaTrait;
use \YouTube\Model;
use App\User;

class Channel extends Model implements HasMedia
{
    use HasMediaTrait;
    public function user()
    {
        return $this->belongsTo(User::class);
    }
}

这是我的模特

【问题讨论】:

标签: php laravel laravel-5 eloquent laravel-medialibrary


【解决方案1】:

addAllMediaFromRequest() 方法返回新添加媒体的集合。

您需要遍历每个添加的文件以将其添加到集合中。

$channel->addAllMediaFromRequest('image')
    ->each(function ($fileAdder) {
        $fileAdder->toMediaCollection('images');
    });

【讨论】:

  • 但是你是怎么知道的?
  • 我是 laravel 的新手,所以
  • 它在 Spatie 文档中。 :)
【解决方案2】:

我认为错误非常明显,它无法找到您在使用语句use \YouTube\Model; 中拥有的模型。你真的应该导入 laravel 模型。即

use Illuminate\Database\Eloquent\Model;

【讨论】:

  • 实际上没有创建我自己的基础模型,它正在扩展到 eloquent 模型
  • 使用 Illuminate\Database\Eloquent\Model 作为 BaseModel;使用 Illuminate\Support\Str;类模型扩展 BaseModel { public $incrementing = false;受保护的 $guarded = [];
  • 那个基本模型在哪里,这个\Youtube\Model来自哪里???
  • 不,实际上我更改了应用程序名称。所以youtube指的是应用程序目录。所以 app/model 中的基本模型
猜你喜欢
  • 1970-01-01
  • 2021-09-15
  • 2019-10-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-11
  • 2019-10-10
相关资源
最近更新 更多