Alex_Wells
@Alex_Wells
PHP/TS/Kotlin developer

Как использовать UUID (binary16) в Laravel + mysql?

Здравствуйте. Уже два дня мучаюсь и никак не могу придумать, как-же заставить laravel и mysql работать вместе.. в общем задача в том что-бы при любом запросе в базу использовался именно binary uuid, а не string. При этом в вьюшках и других местах - обычный.

Варианты:
1) хранить его в модели в виде string - вообще не вариант
2) хранить его в модели в виде binary и конвертировать в string при нужде (к примеру создав accessor id_string). Это круто, но laravel же нихера не продумал - а что если надо несколько полей uuid? К примеру в pivot таблице? Даже допустив, что эту проблему можно решить кучей костылей, то в любом случае остается главная - magic методы модели.

Обьясню: у модели Eloquent'а есть куча методов. Но еще большая часть висит в Eloquent Query Builder'е и вызывается магическими методами из модели.. самое прикольное это то, что параметр передается напрямую, а не через модель. То-есть при попытке найти uuid в виде string - ничего не получиться, ибо произойдет поиск по string.

А теперь вопрос: как заставить eloquent трансформировать поля перед запросом / после запроса? В doctrine2, судя по топикам, это делается созданием типа.. в свою очередь в нем есть два метода: "convertToPhpValue" и "convertToDatabaseValue".. Есть ли похожие методы в каких-то package'ах для Лари?
  • Вопрос задан
  • 458 просмотров
Пригласить эксперта
Ответы на вопрос 1
AmdY
@AmdY
PHP и прочие вебштучки
Для запросов заворачивать в DB::raw, плюс костыли с hex2bin и обратно.
При выборке через pivot запрос можно дополнять
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы