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);
}
您可以获得最后一条记录。:)
我目前正在使用 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);
}
您可以获得最后一条记录。:)