Десятичные дроби позволят использовать такие большие числа и позволят вам сохранить SchemaTool, просто установите масштаб на 0.
<?php
/**
* @Column(type="decimal", precision=20, scale=0, nullable=false, unique=true)
*/
Protected $facebookId;
Оформление полной записи о том, почему здесь .[РЕДАКТИРОВАТЬ] (ссылка не работает) Я вставил статью ниже.В любом случае это было написано мной;)
число без знака, настолько большое, что ваш мозг взорвется!w / Doctrine 2
ORM имеют внутреннюю проблему.Как вы берете тип данных только некоторые RDBMS поддержки и позволяют вам использовать его в любом случае.Ну, когда дело доходит до Doctrine 2 и чисел без знака, они становятся немного ленивыми.
Все, что я хочу сделать, это сохранить мои 64-битные идентификаторы facebook.Насколько это сложно?Ну, моя СУБД - это MySQL, так что все, что мне действительно нужно, - это беззнаковый bigint.
<?php
/**
* @Column(type="bigint", nullable=false, unique=true, columnDefinition="unsigned")
*/
Protected $facebookId;
Кажется, что вы найдете это, пока вы не прочитаете:
columnDefinition: Фрагмент DDL SQL, который начинается после столбцаname и указывает полное (непереносимое!) определение столбца.Этот атрибут позволяет использовать расширенные функции RMDBS.Однако вы должны тщательно использовать эту функцию и последствия.SchemaTool больше не будет правильно определять изменения в столбце, если вы используете «columnDefinition».По сути, эта функция позволяет вам свободно формировать неподдерживаемые элементы в определении столбца.Изготовление чисел без знака технически НЕ ПОДДЕРЖИВАЕТСЯ!Не говоря уже о том, что мои системы разработки и QA сильно зависят от SchemaTool.Мы можем поблагодарить ленивых разработчиков из Doctrine и sqlite3 за этот маленький кусочек сумасшедшего города.
Это сразу же вызвало поиск в Google.Я не люблю думать, если мне не нужно.Что я нашел?Все используют Varchars.VARCHARS!?!?У меня был сердечный приступ.Это было просто недопустимо.
Таким образом, вводится десятичное число.Это идеально.Размер хранилища является переменным, и он хранится в двоичном формате, поэтому индексирование выполняется очень быстро.Мы просто устанавливаем десятичную точность на ноль и вуаля.ORM может портировать это на любую RDBMS, она достаточно большая, чтобы мы не заботились о неподдерживаемой проблеме со знаком / без знака, и это молниеносно.десятичная дробь (20,0) должна обрабатывать нашу страницу в facebook размером восемнадцать квинтиллионов четыреста сорок шесть квадриллионов семьсот сорок четыре триллиона семьдесят три миллиарда семьсот девять миллионов пятьсот пятьдесят одна тысяча шестьсот пятнадцать довольно хорошо.
<?php
/**
* @Column(type="decimal", precision=20, scale=0, nullable=false, unique=true)
*/
Protected $facebookId;