80 lines
1.9 KiB
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');
|
|
}
|
|
}
|