Это вопрос старой боли с пробелами в конце и в начале(реже) вводимых пользователями в разных полях.
Проблема настолько часто встречалась, что обрезка пробелов была почти всегда в коде. Поэтому добавили такой функционал по умолчанию, одновременно кстати с установкой в null пустых строк. Что тоже повысило удобство.
Если нужно там можно писать исключения.
Спасибо за ответ!
А подскажите, для чего это в практике используют "ConvertEmptyStringsToNull" "одновременно кстати с установкой в null пустых строк. " - например есть опциональный description, в базе string по умолчанию '' пустая строка.
Для какой цели мне в базе имеет смысл хранить именно null а не пустую строку.
Valeriu Vodnicear, 1. Как понять что следует ставить как default для колонки, null или пустую строку?
2. Сколько тратиться памяти, в базе данных для хранения состояния/значения ячейки, если сравнивать null и пустую строку, интересует ответ в байтах.
Антон В., смотрите. Эти два мидвара изначально добавлялись из расчёта умолчаний и максимального использования "волшебства" Оаравел для уменьшения кода. А значит подразумевалось использование массовых присвоений и чтобы это всё работало, без лишних доп проверок, а просто на автомате с валидацией автоматической и автоматическим присовением, ввели эти два мидлвара, так как очень часто делали: обрезку пробелов, и в null пустые строки.
Насчёт null вместо пустых строк, да и вообще в null в mysql и подобных:
- не нужен null не делайте его. Зачастую он не нужен, а на производительность он влияет отрицательным способом.
Про строки: почему null, потому что хранение пустой строки в базе - это все таки хранение информации. И дело тут не в объеме информации, а в логическом смысле и архитектуре-логики приложения в целом. Если нам важно знать и отличать наличие инфы и её отсутвие, тогда уместно использовать null в mysql, чтобы работали все встроенные функции типа LENGTH, сортировок, COUNT. поэтому и в ларавел есть удобное обертки типа whereNotNull и тп и тд.
Супероптимизации БД не должна вас заводить в рамки, мешающими работать логике приложения. Но это не значит что на всё нужно забить, везде null, никакой нормлаизации Базы данных и тп.
Как то так, если кратко.