Как использовать 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'ах для Лари?
Я так и сам могу.. я говорю про хорошее flexible решение.. Вообще я удивляюсь почему laravel не юзает model->getKey() в билдере, но при этом юзает model->getQualifiedKeyName()...