'profit_share_receiver', 'type' => [ 'action' => ReceiverActionEnum::class, 'status' => ReceiverStatusEnum::class ], 'insert' => ['order_no'], 'readonly' => ['user_id', 'order_no'], ]; } protected function setOrderNoAttr($value, $data): string { return generate_number(NumberBizEnum::PROFIT_SHARE_RECEIVER, 5); } public function getActionTextAttr($value, $data) { return $data['action']->toString(); } public function getStatusTextAttr($value, $data) { return $data['status']->toString(); } public function searchStatusAttr(Query $query, $value, $data) { if ($value === null) return; $status = ReceiverStatusEnum::tryFrom($value); $status && $query->where('status', $value); } public function searchOrderNoAttr(Query $query, $value, $data) { $value && $query->where('order_no', 'like', "%{$value}%"); } public function user(): BelongsTo { return $this->belongsTo(User::class, 'user_id', 'id'); } }