'wechatpay_transfer_bill', 'type' => [ 'state' => TransferBillStatusEnum::class, ], 'insert' => ['out_bill_no'], 'readonly' => ['user_id', 'mch_id', 'out_bill_no', 'appid', 'transfer_amount', 'fee', 'openid', 'user_name'], ]; } public function searchStateAttr(Query $query, $value) { $value = TransferBillStatusEnum::tryFrom($value); if ($value) { $query->where('state', $value); } } public function searchOutBillNoAttr(Query $query, $value) { if ($value) { $query->where('out_bill_no', $value); } } protected function setOutBillNoAttr($value, $data): string { return generate_number(NumberBizEnum::WITHDRAWAL); } }