'array', 'spec' => 'array', 'part' => 'array', 'content' => 'array', 'images' => 'array', 'check_status' => CheckStatus::class, ]; protected $dates = ['check_at']; protected static function booted() { static::creating(function ($model) { if (! $model->goods_sn) { $model->goods_sn = Str::uuid(); } }); static::updating(function (Goods $model) { if ($model->isDirty(['merchant_id', 'category_id', 'brand_id', 'goods_sn', 'name', 'cover_image', 'description', 'content', 'price', 'vip_price']) && $model->check_status === CheckStatus::Success) { $model->check_status = CheckStatus::None; $model->check_at = null; $model->check_user_id = null; $model->check_remarks = null; } }); } public function modelFilter() { return GoodsFilter::class; } public function category() { return $this->belongsTo(GoodsCategory::class, 'category_id'); } public function merchant() { return $this->belongsTo(Merchant::class, 'merchant_id'); } public function type() { return $this->belongsTo(GoodsType::class, 'type_id'); } public function brand() { return $this->belongsTo(GoodsBrand::class, 'brand_id'); } public function checkUser() { return $this->belongsTo(Administrator::class, 'check_user_id'); } public function skus() { return $this->hasMany(GoodsSku::class, 'goods_id'); } public function checkLogs() { return $this->hasMany(GoodsCheck::class, 'goods_id'); } public function scopeSort($q) { return $q->orderBy('created_at', 'desc'); } public function scopeShow($q) { return $q->where('on_sale', 1)->where('check_status', CheckStatus::Success); } }