whereIn('id', $ids)->column('name'); return $cityNames ? implode(',', $cityNames) : ''; } public function playxUserAsset(): \think\model\relation\BelongsTo { return $this->belongsTo(\app\common\model\MallUserAsset::class, 'playx_user_asset_id', 'id'); } /** * 实物订单收货快照(写入 mall_order.receiver_*,与 mall_address 当前内容一致) * * @return array{receiver_name: string, receiver_phone: string, receiver_address: string} */ public static function snapshotForPhysicalOrder(self $addr): array { $regionText = $addr->region_text ?? ''; $parts = array_filter([ trim($regionText), trim($addr->detail_address ?? ''), ], static function ($s) { return $s !== ''; }); $receiverAddress = implode(' ', $parts); return [ 'receiver_name' => trim($addr->receiver_name ?? ''), 'receiver_phone' => trim($addr->phone ?? ''), 'receiver_address' => $receiverAddress, ]; } }