我已经在Laravel 9项目中安装了Spatie Media Library。按照文档,我已经设置了我的User
模型来实现HasMedia
,并像下面这样使用InteractsWithMedia
<?php
namespace App\Models;
use Spatie\Image\Manipulations;
use Laravel\Sanctum\HasApiTokens;
use Spatie\MediaLibrary\HasMedia;
use Illuminate\Notifications\Notifiable;
use Spatie\MediaLibrary\InteractsWithMedia;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
class User extends Authenticatable implements HasMedia
{
use HasApiTokens, HasFactory, Notifiable, InteractsWithMedia;
// ...
}
我也已经能够上传图像在我的用户控制器本地像这样
if ($request->has('photo')) {
$user->addMedia($request->photo)
->toMediaCollection('user-photos');
}
在部署到我的临时服务器后,我收到了这个错误
local.ERROR:未找到接口“Spatie\MediaLibrary\HasMedia”{“exception”:“[object](Error(code:0):无法找到“Spatie\MediaLibrary\HasMedia”的接口。/app/Models/User.php:15)
我在服务器上运行了composer dump-autoload
,但没有修复错误。为什么我会得到这个错误,我可以使用什么可能的解决方案来解决这个错误?
3条答案
按热度按时间c8ib6hqw1#
通过运行以下命令
php artisan config:cache
和php artisan queue:restart
修复了此问题。结果发现错误的原因是因为队列工作线程仍在使用以前缓存的环境变量。这两个命令都确保了环境文件中新设置的磁盘现在可供队列worker使用。
mw3dktmi2#
执行了
composer update
和php artisan cache:clear
,但仍然得到错误Undefined type 'Spatie\MediaLibrary\HasMedia'
。关闭VSCode v1.78.2并打开它解决了错误消息。
bttbmeg03#
把这个换了
到