Автоинкремент удобен, но плохо подходит для распределённых систем. UUIDv4 решает проблему уникальности, зато случайные значения могут хуже работать с B-tree индексами.
🔘 UUIDv7 — компромисс: содержит timestamp и случайную часть, поэтому идентификаторы генерируются примерно в хронологическом порядке.
use Symfony\Component\Uid\Uuid;
$id = Uuid::v7();
echo $id->toRfc4122();
// 0192f8a1-...
echo $id->getDateTime();
// время, закодированное в UUID
🔘 А если нужен более компактный идентификатор для URL:
$id->toBase58();
🔘 Symfony UID можно использовать отдельно от Symfony:
composer require symfony/uid
Особенно интересно для распределённых сервисов, где ID нужно генерировать независимо от БД.
📍 Ссылка на документацию
Библиотека пхпшника