68 lines
1.5 KiB
PHP
68 lines
1.5 KiB
PHP
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Factories\HasFactory;
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Awobaz\Compoships\Compoships;
|
|
use Illuminate\Support\Facades\Storage;
|
|
|
|
class ItemVariant extends Model
|
|
{
|
|
use HasFactory;
|
|
|
|
use Compoships;
|
|
|
|
protected $table = 'item_variants';
|
|
protected $primaryKey = 'id';
|
|
|
|
protected $fillable = [
|
|
'id',
|
|
'code',
|
|
'description',
|
|
'item_id',
|
|
'display_name',
|
|
'is_publish',
|
|
'barcode',
|
|
'variant_name',
|
|
];
|
|
|
|
public function reference()
|
|
{
|
|
return $this->belongsTo(ItemReference::class, ["item_id", "id"], ["item_id", "item_variant_id"]);
|
|
}
|
|
|
|
|
|
public function variables()
|
|
{
|
|
return $this->belongsToMany(Variant::class, "variant_value")->select("id", "name", "value");
|
|
}
|
|
|
|
public function image()
|
|
{
|
|
return $this->hasOne(ItemImage::class)->where('item_id', $this->item_id);
|
|
}
|
|
|
|
public function images()
|
|
{
|
|
return $this->hasMany(ItemImage::class)->where('item_id', $this->item_id);
|
|
}
|
|
public function variantValue()
|
|
{
|
|
return $this->hasMany(\App\Models\VariantValue::class, 'item_variant_id');
|
|
}
|
|
|
|
public function getImageUrlAttribute()
|
|
{
|
|
$image = $this->images->first()->filename ?? null;
|
|
|
|
|
|
|
|
if (str_contains($image,"http")) {
|
|
return $image;
|
|
}
|
|
|
|
return $image ? Storage::disk('wms')->url($image) : null;
|
|
}
|
|
}
|