Files
opensem/app/Models/Shop/Article.php
Ludovic CANDELLIER c3a05640ab Fixes
2021-08-24 23:41:10 +02:00

95 lines
2.6 KiB
PHP

<?php
namespace App\Models\Shop;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Spatie\Image\Manipulations;
use Spatie\MediaLibrary\HasMedia;
use Spatie\MediaLibrary\InteractsWithMedia;
use Spatie\MediaLibrary\MediaCollections\Models\Media;
use BeyondCode\Comments\Traits\HasComments;
use Rinvex\Categories\Traits\Categorizable;
use Rinvex\Tags\Traits\Taggable;
use Fico7489\Laravel\EloquentJoin\Traits\EloquentJoin;
use Wildside\Userstamps\Userstamps;
class Article extends Model implements HasMedia
{
use Categorizable, EloquentJoin, HasComments, InteractsWithMedia, Taggable, SoftDeletes, UserStamps;
protected $guarded = ['id'];
protected $table = 'shop_articles';
public function article_nature()
{
return $this->belongsTo('App\Models\Shop\ArticleNature');
}
public function images()
{
return $this->hasMany('App\Models\Core\Media', 'model_id')->where('model_type', 'App\Models\Shop\Article');
}
public function image()
{
return $this->hasOne('App\Models\Core\Media', 'model_id')->where('model_type', 'App\Models\Shop\Article');
}
public function inventories()
{
return $this->hasMany('App\Models\Shop\Inventory');
}
public function invoiceItems()
{
return $this->hasMany('App\Models\Shop\InvoiceItem');
}
public function prices()
{
return $this->hasMany('App\Models\Shop\Price');
}
public function product()
{
return $this->morphTo();
}
public function scopeByArticle($query, $id)
{
return $query->where($this->table . '.id', $id);
}
public function scopeByCategory($query, $category_id)
{
}
public function scopeByArticleNature($query, $id)
{
return $query->where($this->table . '.article_nature_id', $id);
}
public function scopeByProduct($query, $model)
{
return $query->where($this->table . '.product_type', $model);
}
public function scopeByProductId($query, $model_id)
{
return $query->where($this->table . '.product_id', $model_id);
}
public function registerMediaConversions(Media $media = null) : void
{
$this->addMediaConversion('thumb')->fit(Manipulations::FIT_CROP, 32, 32);
$this->addMediaConversion('mini')->fit(Manipulations::FIT_CROP, 96, 96);
$this->addMediaConversion('preview')->fit(Manipulations::FIT_CROP, 160, 160);
$this->addMediaConversion('normal')->fit(Manipulations::FIT_CROP, 480, 480);
$this->addMediaConversion('zoom')->fit(Manipulations::FIT_CROP, 1200, 1200)->withResponsiveImages();
}
}