where('name', $name); ConfigScopeEditHelper::applyDeptIdWhere($query, AdminScopeHelper::normalizeRecordDeptId($deptId)); return $query->find(); } /** * 是否玩家默认模板池(name=playerDefault) * 须用 getData()['name']:方法内 $this->name 会命中 ThinkORM 内部属性而非表字段,导致恒为 false */ public static function isPlayerDefaultPoolName($name): bool { return (string) $name === self::NAME_PLAYER_DEFAULT; } /** * 是否玩家默认模板池(运行时按该池权重抽档,改池配置即对所有关联玩家生效) */ public function isPlayerDefaultTemplate(): bool { $data = $this->getData(); return self::isPlayerDefaultPoolName($data['name'] ?? ''); } /** * 后台展示用奖池名称:优先 remark,否则 name * * @param array|self $row */ public static function displayLabel($row): string { // 禁止对模型实例 toArray():append display_name 会再次触发本方法,导致内存耗尽 if ($row instanceof self) { $data = $row->getData(); $remark = trim((string) ($data['remark'] ?? '')); if ($remark !== '') { return $remark; } return trim((string) ($data['name'] ?? '')); } $remark = trim((string) ($row['remark'] ?? '')); if ($remark !== '') { return $remark; } return trim((string) ($row['name'] ?? '')); } public function getDisplayNameAttr(): string { $data = $this->getData(); $remark = trim((string) ($data['remark'] ?? '')); if ($remark !== '') { return $remark; } return trim((string) ($data['name'] ?? '')); } /** * 名称 搜索 */ public function searchNameAttr($query, $value) { $like = '%' . $value . '%'; $query->where(function ($q) use ($like) { $q->where('name', 'like', $like) ->whereOr('remark', 'like', $like); }); } }