伙计们,我有一个产品表和一个products_images。
在我的产品模型中,我有一种获取与产品相关的图像的方法,而在product_images模型中,我有另一种方法(变异器),用于检查图像是否存在,如果存在,则显示图像(如果不存在)显示默认图片。
但是我注意到我做错了,因为如果表product_images中不存在产品图像,则该方法将永远不会被触发,因此所有逻辑都应在产品模型中。
这就是我的做法:
产品型号:
public function image()
{
return $this->hasOne(ProductImage::class);
}
ProductImage模型:
protected $fillable = [
'product_id', 'path', 'is_main_image'
];
public function getPathAttribute($value)
{
if($value){
$image = url('storage/media/products/thumbs/'.$value);
}else{
$image = 'https://via.placeholder.com/206';
}
return $image;
}
因此,看看我做了什么,如何将ProductImage方法的最后逻辑添加到产品模型方法图像中,最好的方法是不在刀片上创建条件来检查图像是否存在。
答案 0 :(得分:1)
您可以检查image
模型中Product
关系的存在,例如:
Product.php:
public function image(){
return $this->hasOne(Image::class);
}
public function getImageSrcAttribute(){
if($this->image){
return url("storage/media/products/thumbs/".$this->image->path);
}
return "https://via.placeholder.com/206";
}
然后,只需在您的刀片中致电
<img src='{{ $product->image_src }}'/>
请注意,$this->image->path
只是一个占位符;您的images
表应该具有一个引用文件的值,只需根据需要使用即可。