|
-9 / 8 / 3
Регистрация: 17.02.2021
Сообщений: 239
|
|
Как указывать типы и дефолтные значения при работе с AR моделью?24.09.2021, 19:18. Показов 3177. Ответов 19
Метки нет (Все метки)
Создаю объект AR у которого свойства - это столбцы таблицы БД и пытаюсь выполнить save() - получаю ошибку нельзя обращаться к свойствам у которых нет дефолтного значения )))
Ну так ребята у меня вообще-то дефолтными значениями занимается сам мускул, как я их в PHP задам, у меня же данные будут нарушены, а переписывать дефолтные значения из мускула в класс я не хочу, зачем мне делать двойную работу? Как быть? И ещё как мне прописывать типы свойств, чтобы они соответствовали типам столбцов БД (например в PHP нет типа date или decimal)? Есть мануал какой-нибудь? p.s. я ещё понимаю если бы в БД запрещено хранить null в столбце а я делаю save(), так по дефолту свойство как бы null то мне бы отлуп был что у меня структура не позволяет null сохранять, а то...
0
|
|
| 24.09.2021, 19:18 | |
|
Ответы с готовыми решениями:
19
Дефолтные значения не определены, как побороть?
|
|
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
|
|
| 24.09.2021, 20:39 | |
|
DefenseMinister, Покажите текст ошибки.
0
|
|
|
-9 / 8 / 3
Регистрация: 17.02.2021
Сообщений: 239
|
||||||
| 24.09.2021, 20:43 [ТС] | ||||||
|
sad67man, нельзя юзать свойство до инициализации
![]() Добавлено через 2 минуты sad67man,
0
|
||||||
|
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
|
||||||||||||
| 24.09.2021, 20:52 | ||||||||||||
Сообщение было отмечено DefenseMinister как решение
РешениеВ общем php8 выкидывает ошибку при попытке обратиться к непроинициализированному свойству, если у нее указана типизация.
Добавлено через 3 минуты DefenseMinister, Либо вы должны тогда указать значение по умолчанию. Если вы хотите чтоб был null
1
|
||||||||||||
|
-9 / 8 / 3
Регистрация: 17.02.2021
Сообщений: 239
|
|||||||
| 24.09.2021, 20:55 [ТС] | |||||||
|
sad67man,
смотри теперь
![]() я не хочу в классах заниматься рисованием дефолтных значений своствам, у меня в мускуле они указаны и работают при вставке строки Добавлено через 2 минуты
0
|
|||||||
|
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
|
|
| 24.09.2021, 20:57 | |
|
1
|
|
|
-9 / 8 / 3
Регистрация: 17.02.2021
Сообщений: 239
|
|
| 24.09.2021, 21:05 [ТС] | |
|
sad67man, блин чёт я тупанул, у меня же сделано сравнение первоначального и текущего значения свойств, у меня при new если не было изменения значения свойства, то пустой insert отработает, не будет set login = ? )))
сори, затупил ![]() Добавлено через 2 минуты sad67man, а с типизацией извращаться, типа decimal это float да?
0
|
|
|
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
|
||
| 25.09.2021, 08:34 | ||
|
https://www.php.net/manual/ru/... .float.php Например, если в decimal у вас -- денежная величина, то лучше использовать Value Object. Например: https://www.moneyphp.org/en/st... arted.html Добавлено через 7 минут Подробней про перевод типов можете узнать по запросу "php ActiveRecord type casting"
1
|
||
|
68 / 60 / 18
Регистрация: 03.12.2010
Сообщений: 365
|
|||||||
| 27.09.2021, 09:29 | |||||||
1
|
|||||||
|
-9 / 8 / 3
Регистрация: 17.02.2021
Сообщений: 239
|
||||||
| 27.09.2021, 09:41 [ТС] | ||||||
|
Миушник, зачем мне самому думать, пусть PHP думает, нужно ли производить запрос и с какими столбцами работать
![]()
0
|
||||||
|
51 / 38 / 13
Регистрация: 20.01.2019
Сообщений: 115
|
||||||||||||
| 27.09.2021, 15:32 | ||||||||||||
0
|
||||||||||||
|
-9 / 8 / 3
Регистрация: 17.02.2021
Сообщений: 239
|
|||
| 27.09.2021, 15:39 [ТС] | |||
|
0
|
|||
|
51 / 38 / 13
Регистрация: 20.01.2019
Сообщений: 115
|
|||
| 27.09.2021, 15:53 | |||
|
а языку вообще всё равно, имя столбца это или фамилия строки не понимаю, что за "служебный объект" ![]() если очень хочется указывать тип свойства - на здоровье, это только плюс. просто это является нововведением php 7.4+, а бОльшая часть кода написана без указания типов, поэтому тут грубой ошибки нет. php всё ещё является динамически типизированным =)
0
|
|||
|
-9 / 8 / 3
Регистрация: 17.02.2021
Сообщений: 239
|
||||||
| 27.09.2021, 16:04 [ТС] | ||||||
![]()
0
|
||||||
|
5755 / 4134 / 1508
Регистрация: 06.01.2011
Сообщений: 11,276
|
||
| 27.09.2021, 16:12 | ||
|
0
|
||
|
-9 / 8 / 3
Регистрация: 17.02.2021
Сообщений: 239
|
||
| 27.09.2021, 16:18 [ТС] | ||
|
0
|
||
|
68 / 60 / 18
Регистрация: 03.12.2010
Сообщений: 365
|
|||||||
| 27.09.2021, 16:30 | |||||||
|
Я вам посоветовал попробовать, как можно сохранить и данные в БД должны вставиться сами по себе, как в вашей БД предусмотрено. Нужен null, будет null, поставили по дэфолту 0, то будет 0. И никаких предустановленных значений в модели не надо. Добавлено через 7 минут Если вам нужно сохранить в БД дату со временем, то вставляйте нужные значения.
Добавлено через 1 минуту P.S. Указывайте значения по-умолчанию для всех полей в БД. Если не критично, то по-умолчанию null.
0
|
|||||||
|
-9 / 8 / 3
Регистрация: 17.02.2021
Сообщений: 239
|
|||||||||||||||||||
| 27.09.2021, 17:04 [ТС] | |||||||||||||||||||
![]() ![]() Para bellum, кстати ошибка о том что я юзаю неинициализированнОЕ свойство вылетает только если у меня public int $id; Это свойство находится в Model и если я пропишу public ?int $id = null;, то такого рода ошибок больше нет и можно пользоваться вот так
sad67man, смотри какой фокус получается
А как же неинициализированные свойства модели Debugger?
0
|
|||||||||||||||||||
|
2603 / 1507 / 689
Регистрация: 23.08.2015
Сообщений: 3,823
|
||
| 27.09.2021, 17:06 | ||
Сообщение было отмечено DefenseMinister как решение
РешениеЕсли вы не все свойства проинициализировали и у вас нет ошибки - это значит что вы и не обращаетесь к этим свойствам внутри метода save().
1
|
||
|
-9 / 8 / 3
Регистрация: 17.02.2021
Сообщений: 239
|
|||
| 27.09.2021, 17:25 [ТС] | |||
|
короче я понял, ошибка должна быть прописана вот так - Typed property core\base\Model::$id must not be accessed FOR READ before initialization порешали ![]() Добавлено через 10 минут
0
|
|||
| 27.09.2021, 17:25 | |
|
Помогаю со студенческими работами здесь
20
Дефолтные значения параметров
Есть ли нормальная литература по работе с DOM моделью? Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Загрузка PNG-файла с альфа-каналом с помощью библиотеки SDL3_image на Android
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога
Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip"
Извлеките архив и вы увидите. . .
|
|
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога
Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д.
Сборка примера
Скачайте. . .
|
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net
REST сервисы временно не работают, только через Web.
Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
|
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
|