6
0
Fork 0
jiqu-library-server/app/Models/Store/Store.php

80 lines
1.9 KiB
PHP

<?php
namespace App\Models\Store;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
use Dcat\Admin\Traits\HasDateTimeFormatter;
class Store extends Model
{
use HasFactory, HasDateTimeFormatter;
protected $fillable = ['title', 'image', 'extra'];
protected $casts = [
'extra' => 'json'
];
protected $attributes = [
'status' => 1,
'sort' => 1
];
protected static function booted()
{
static::deleted(function ($model) {
// 商品记录
$model->productSkus()->detach();
// 库存记录
$model->stockLogs()->delete();
// 管理员记录
$model->administrators()->detach();
// 桌号记录
$model->desks()->delete();
// 设备记录
$model->devices()->delete();
});
}
public function administrators()
{
return $this->belongsToMany(\App\Models\Admin\Administrator::class, 'store_administrators', 'store_id', 'administrator_id');
}
public function productSkus()
{
return $this->belongsToMany(\App\Models\ProductSku::class, 'store_product_skus', 'store_id', 'product_sku_id')->withPivot('amount', 'status');
}
public function productSpus()
{
return $this->belongsToMany(\App\Models\ProductSpu::class, 'store_product_skus', 'store_id', 'product_spu_id')->withPivot('amount', 'status');
}
public function stockLogs()
{
return $this->hasMany(StockLog::class, 'store_id');
}
public function desks()
{
return $this->hasMany(Desk::class, 'store_id');
}
public function devices()
{
return $this->hasMany(Device::class, 'store_id');
}
public function scopeEffective($q)
{
return $q->where('status', 1);
}
public function scopeSort($q)
{
return $q->orderBy('sort')->orderBy('id', 'desc');
}
}