Laravel 多态关系检索最后一条记录

Laravel polymorphic relationship retrieve last record

我目前正在使用 Spatie 媒体库,并且我创建了自己的自定义 class 如下:

use Spatie\MediaLibrary\Models\Media as BaseMedia;

class TrybzMedia extends BaseMedia
{
    protected $table = 'media';
    protected $appends = ['url'];

    public function getUrlAttribute()
    {
        return $this->getUrl();
    }
}

我有一个用户 class,我在其中定义了一个多态关系:

public function avatar()
{
    return $this->morphMany(TrybzMedia::class, 'model')->where('collection_name', '=', 'avatar');
}

可能上传了多张图片,所以我想要实现的是获取关系的最后一条记录。我尝试了以下但没有成功:

public function avatar()
{
    return $this->morphMany(TrybzMedia::class, 'model')->where('collection_name', '=', 'avatar')->last();
}

我想在关系定义中包含所有代码。这可能吗?

您可以尝试使用 order by 和 first 来获取最后一条或第一条记录。

public function avatar()
{
    return $this->morphMany(TrybzMedia::class, 'model')->where('collection_name', '=', 'avatar')->orderBy('put_column_name_here', 'DESC')->first();
}

以下作品:

public function cover()
{
    return $this->morphMany(TrybzMedia::class, 'model')
        ->where('collection_name', '=', 'cover')
        ->take(1)
        ->latest();
}

您可以尝试使用 ->limit(1),例如:

public function avatar()
{
   return $this->morphMany(TrybzMedia::class, 'model')->where('collection_name', '=', 'avatar')->orderBy('put_column_name_here', 'DESC')->limit(1);
}

您可以获得最后一条记录。:)