ЭТАП.2 Установка PostgreSQL и создание БД для проекта.

Для Windows (через официальный инсталлятор)

Шаг 1. Скачай установщик

Переходи на официальный сайт: https://www.postgresql.org/download/windows/

Выбирай последнюю версию (сейчас 16.x или 17.x) и скачивай интерактивный установщик от EDB.

Шаг 2. Запусти установку

  1. Запусти скачанный .exe файл от имени администратора.
  2. Нажми Next.

Шаг 3. Выбери компоненты

Оставь всё по умолчанию:

  • ✅ PostgreSQL Server
  • ✅ pgAdmin 4 (графическая админка)
  • ✅ Stack Builder (для доп. расширений)
  • ✅ Command Line Tools

Жми Next.

Шаг 4. Выбери папку установки

Оставь по умолчанию: C:\Program Files\PostgreSQL\18
Жми Next.

Шаг 5. Выбери каталог данных

Оставь по умолчанию: C:\Program Files\PostgreSQL\18\data
Жми Next.

Шаг 6. Задай пароль суперпользователя (postgres)

Очень важно! Запомни этот пароль.
Придумай что-то вроде: root или любой свой посложнее
Запиши его в блокнот, он понадобится для подключения Laravel.

Жми Next.

Шаг 7. Порт

Оставь стандартный: 5432
Жми Next.

Шаг 8. Локаль

Выбери: Russian, Russia (или оставь Default locale)
Жми Next.

Шаг 9. Заверши установку

Нажми Next → Finish.


Через системные переменные (рекомендую) Найди папку с PostgreSQL.
Запомни путь, где лежит psql.exe — например: C:\Program Files\PostgreSQL\18\bin
Открой настройки переменных окружения.

Win + R → введи sysdm.cpl → Enter

 Добавь путь в PATH

  1. В нижнем окне (Системные переменные) найди строку Path.
  2. Выдели её → нажми Изменить.
  3. Нажми Создать (или Новая).
  4. Вставь путь к папке bin, например:
C:\Program Files\PostgreSQL\18\bin

После установки — проверь через командную строку:

psql --version

Если видишь версию — всё готово! Теперь проверим доступность БД:

pg_isready -h localhost -p 5432

Должно быть: localhost:5432 – accepting connections

Теперь зайдем через терминал в БД:

psql -U postgres -h localhost -p 5432

Введи пароль, который задал. Если появилось postgres=# — всё работает.

PostgreSQL установлена теперь надо создать саму БД для проекта !

Правильная команда для создания БД назовем ее dating_db

psql -U postgres -h localhost -p 5432 -c "CREATE DATABASE dating_db ENCODING='UTF8' LC_COLLATE='Russian_Russia.UTF-8' LC_CTYPE='Russian_Russia.UTF-8' TEMPLATE=template0;"

Пароль тот который мы использовали при установке – root

Проверяем, что база создалась

psql -U postgres -h localhost -p 5432 -l | grep dating_db

Пример как создать еще пользователя для БД. Но нам это пока что не нужно. Мы будем использовать postgres и root

Создаём пользователя laravel_user

psql -U postgres -h localhost -p 5432 -c "CREATE USER laravel_user WITH PASSWORD 'laravel_pass';"

Даём права на базу dating_db

psql -U postgres -h localhost -p 5432 -c "GRANT ALL PRIVILEGES ON DATABASE dating_db TO laravel_user;"

Проверь, что пользователь может подключиться к базе

psql -U laravel_user -h localhost -p 5432 -d dating_db

Введи пароль laravel_pass. Если зашло — всё работает! Выйди через \q.

ЭТАП.3 Подключаем Laravel к базе

Открой созданный проект в редакторе кода (рекомендую VS Code или PhpStorm). Найди файл .env в корне проекта и подключись. Найди блок с настройками БД и измени его:

DB_CONNECTION=pgsql
DB_HOST=127.0.0.1
DB_PORT=5432
DB_DATABASE=dating_db
DB_USERNAME=postgres
DB_PASSWORD=root

Включаем драйвер PostgreSQL

  1. Открой этот файл php.ini в любом текстовом редакторе (от имени администратора, если ругнется).
  2. Нажми Ctrl+F и ищи строку pdo_pgsql.
  3. Ты найдешь строчку, которая выглядит так: ;extension=pdo_pgsql
  4. Убери точку с запятой в начале — это символ комментария. Должно стать так: extension=pdo_pgsql
  5. Теперь нажми Ctrl+F и ищи строку pgsql.
  6. Найди строчку ;extension=pgsql и тоже убери точку с запятой: extension=pgsql
  7. убери также точку с запятой: ;extension=intl

(Если этих строк вообще нет в файле, просто допиши их в блок расширений (extension)).

ОБЯЗАТЕЛЬНО закрой терминал (PowerShell), в котором у тебя выскочила ошибка, и открой его заново! Терминал кэширует настройки PHP, и если его не перезапустить, он не увидит изменений. Также перезапусти локальный сервер если нужно.

Делаем миграцию

cd server
php artisan migrate

если все хорошо ты увидишь что то вроде:

   INFO  Preparing database.  

  Creating migration table ........................................................................................................... 228.52ms DONE

   INFO  Running migrations.  

  0001_01_01_000000_create_users_table ............................................................................................... 416.58ms DONE
  0001_01_01_000001_create_cache_table ................................................................................................ 16.00ms DONE
  0001_01_01_000002_create_jobs_table ................................................................................................ 114.36ms DONE

ГОТОВО ! Мы прошли самую нудную часть — настройку окружения. Теперь Laravel знает, где лежат данные.

Проверка что все хорошо

В php.ini у тебя должно быть включено расширение intl (Internationalization — интернационализация). Laravel использует его для форматирования чисел, дат и валют.

php artisan db:show

должно быть без ошибок что то вроде:

  PostgreSQL .................................................................................................................................. 18.4
  Connection ................................................................................................................................. pgsql
  Database ............................................................................................................................... dating_db
  Host ................................................................................................................................... 127.0.0.1
  Port ........................................................................................................................................ 5432
  Username ................................................................................................................................ postgres
  URL ..............................................................................................................................................
  Open Connections ............................................................................................................................... 9  
  Tables ......................................................................................................................................... 9  
  Total Size ............................................................................................................................. 216.00 KB  

  Schema / Table .............................................................................................................................. Size
  public / cache .......................................................................................................................... 24.00 KB  
  public / cache_locks .................................................................................................................... 24.00 KB  
  public / failed_jobs .................................................................................................................... 32.00 KB  
  public / job_batches .................................................................................................................... 16.00 KB  
  public / jobs ........................................................................................................................... 24.00 KB
  public / migrations ..................................................................................................................... 24.00 KB
  public / password_reset_tokens .......................................................................................................... 16.00 KB
  public / sessions ....................................................................................................................... 32.00 KB
  public / users .......................................................................................................................... 24.00 KB

Если так то все отлично !

Проектирование базы данных для Дейтинга + Геолокация

Сайты знакомств держатся на трех китах: Профили, Геолокация, Совпадения (Свайпы). Стандартной таблицы users из коробки нам не хватит.

Правильный подход: таблица users хранит только логин/пароль и email, а всё остальное (возраст, пол, фото, био) вынесем в таблицу profiles. Зачем? Чтобы не раздувать таблицу юзеров, когда нам понадобится делать сложные выборки.

Шаг 2.1: Установка PostGIS (Геолокация)

  1. Скачай установщик.
    Перейди на официальную страницу загрузки PostGIS для Windows. Тебе нужен файл для PostgreSQL 18 (64-бит). Название файла будет выглядеть примерно так: postgis-bundle-pg18x64-setup-3.6.2-1.exe.
  2. Запусти установку.
    • Запусти скачанный .exe-файл.
    • Программа сама найдет твою установленную PostgreSQL 18.
    • Когда установщик попросит ввести пароль, введи тот же пароль, который ты задавал для пользователя postgres при установке PostgreSQL.
    • Остальные шаги можно оставить по умолчанию (путь установки, компоненты).

Нам нужно научить PostgreSQL искать людей в радиусе X километров. Для этого нужен модуль PostGIS.

psql -U postgres -h localhost -p 5432 -d dating_db -c "CREATE EXTENSION postgis;"

в консоли после ввода пароля должно появится CREATE EXTENSION значит все ок !