php 如何解决错误接口“空间\MediaLibrary\HasMedia”未找到

ppcbkaq5  于 2023-05-21  发布在  PHP
关注(0)|答案(3)|浏览(577)

我已经在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,但没有修复错误。为什么我会得到这个错误,我可以使用什么可能的解决方案来解决这个错误?

c8ib6hqw

c8ib6hqw1#

通过运行以下命令php artisan config:cachephp artisan queue:restart修复了此问题。
结果发现错误的原因是因为队列工作线程仍在使用以前缓存的环境变量。这两个命令都确保了环境文件中新设置的磁盘现在可供队列worker使用。

mw3dktmi

mw3dktmi2#

执行了composer updatephp artisan cache:clear,但仍然得到错误Undefined type 'Spatie\MediaLibrary\HasMedia'
关闭VSCode v1.78.2并打开它解决了错误消息。

bttbmeg0

bttbmeg03#

把这个换了

use Spatie\MediaLibrary\HasMedia;

use Spatie\MediaLibrary\HasMedia\HasMedia;

相关问题