1, 'status' => self::STATUS_DISABLE, 'prize_state' => self::PRIZE_UNEXIST, ]; const STATUS_ABLE = 1; // 启用 const STATUS_DISABLE = 0; // 禁用 const PRIZE_EXIST = 1; // 选出竞猜大奖(公布答案) const PRIZE_UNEXIST = 0; // 未选出竞猜大奖(未公布答案) protected static function booted() { static::deleting(function ($guess) { if ($guess->users()->exists()) { throw new \Exception('已经有人竞猜无法删除!!'); } DB::table('user_guess_option')->whereIn('user_guess_id', $guess->users()->pluck('id'))->delete(); $guess->users()->delete(); $guess->options()->delete(); }); } public static $prizeStateMap = [ self::PRIZE_EXIST => '选出竞猜大奖', self::PRIZE_UNEXIST => '未选出竞猜大奖', ]; public static $statusMap = [ self::STATUS_DISABLE => '禁用', self::STATUS_ABLE => '启用', ]; public function options() { return $this->hasMany(GuessOption::class, 'guess_id'); } public function users() { return $this->hasMany(UserGuess::class, 'guess_id'); } public function getStatusNameAttribute() { return data_get(self::$statusMap, $this->status); } public function getPrizeStateNameAttribute() { return data_get(self::$prizeStateMap, $this->prize_state); } }