-- fix_missing_total_referrals_column.sql -- -- مشکل: php artisan migrate می‌گوید Nothing to migrate -- ولی register خطای Unknown column 'total_referrals' می‌دهد. -- -- علت: baseline_migrations.sql این migration را در جدول migrations ثبت کرده -- بدون اینکه ALTER TABLE واقعاً اجرا شود. -- -- راه‌حل ترجیحی (بدون SQL دستی): -- git pull -- php artisan migrate -- (migration: 2026_06_25_000001_ensure_total_referrals_column_on_customers_table.php) -- -- فقط اگر migrate در دسترس نیست، این فایل را مستقیم روی MySQL اجرا کنید: -- mysql -u USER -p DATABASE_NAME < database/sql/fix_missing_total_referrals_column.sql START TRANSACTION; SET @db = DATABASE(); -- 1) ستون را اضافه کن (اگر نبود) SET @sql = IF( (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'customers' AND COLUMN_NAME = 'total_referrals') = 0, IF( (SELECT COUNT(*) FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = @db AND TABLE_NAME = 'customers' AND COLUMN_NAME = 'referral_to_id') > 0, 'ALTER TABLE `customers` ADD COLUMN `total_referrals` INT UNSIGNED NOT NULL DEFAULT 0 AFTER `referral_to_id`', 'ALTER TABLE `customers` ADD COLUMN `total_referrals` INT UNSIGNED NOT NULL DEFAULT 0' ), 'SELECT ''total_referrals already exists'' AS info' ); PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; -- 2) شمارنده معرف‌ها را با داده واقعی هم‌تراز کن UPDATE `customers` AS c SET c.`total_referrals` = ( SELECT COUNT(*) FROM ( SELECT `id` FROM `customers` WHERE `referral_to_id` = c.`referral_id` AND `deleted_at` IS NULL ) AS r ) WHERE c.`referral_id` IS NOT NULL AND TRIM(c.`referral_id`) <> ''; COMMIT; -- 3) تأیید SELECT CASE WHEN COUNT(*) > 0 THEN 'OK: total_referrals exists' ELSE 'ERROR: column still missing' END AS status FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'customers' AND COLUMN_NAME = 'total_referrals';