将图像放在自己的表中会导致更多的开销,因为即使是其中一个图像,您也必须每次查询关系。把它放在项目表中是非常好的,你不应该被打扰。如果你想让事情变得更简单,你可以尝试这种方法。
生成的图像的名字 - somerandomname.jpg
primary_image : somerandomname.jpg
featured_image : somerandomname_featured.jpg
thumbnail_image : somerandomname_thumb.jpg
存储在一个共同的现场图像名称说image
。那里的字段image
将包含值somerandomname.jpg
。
然后将以下内容添加到您的模型中。
protected $appends = [
'primary_image', 'featured_image', 'thumbnail_image'
];
public function getPrimaryImageAttribute()
{
return $this->image;
}
public function getFeaturedImageAttribute()
{
return str_replace('.jpg', '_featured.jpg', $this->image);
}
public function getThumbnailImageAttribute()
{
return str_replace('.jpg', '_thumb.jpg', $this->image);
}
这些访问器可以让你像任何数据库字段一样获取图像。 appends
属性会自动将所有这些字段添加到每个模型结果。