Как настроить DAO?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
user
Сообщения: 159
Зарегистрирован: 2017.12.05, 16:55

Как настроить DAO?

Сообщение user »

В документации указано:
Примечание: Чтобы сохранить точность, данные извлекаются как строки, даже если тип поля в базе данных является числовым.
Насколько я понял, что это происходит на уровне пыха, но в AR все корректно работает, числа возвращаются цифрами
а как на уровне DAO отключить эту возможность, только не нужна, нужно сохранение типов данных.
skynin
Сообщения: 400
Зарегистрирован: 2017.12.12, 10:09

Re: Как настроить DAO?

Сообщение skynin »

user писал(а): 2020.07.29, 09:11 но в AR все корректно работает, числа возвращаются цифрами
Получите модель с id 123
и сравните:
if ($model->id === 123)
user писал(а): 2020.07.29, 09:11 а как на уровне DAO отключить эту возможность
Во-первых - с какой целью, зачем?
Во-вторых штатных средств отключения вроде и нет, но если вот прямо проект умрет без этого - то смотреть в сторону ColumnSchema::typecast, Command и BaseActiveRecord, и заменять своими
user писал(а): 2020.07.29, 09:11 нужно сохранение типов данных.
думаю - вы хотите странного.

но может быть и правда нужно.
узнать бы - зачем :)
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
user
Сообщения: 159
Зарегистрирован: 2017.12.05, 16:55

Re: Как настроить DAO?

Сообщение user »

на yii сделано API
с ним работает мобильное приложение, важно сохранить типи данных
с AR невозножно реализовать, т.к. лезет одинэсник, а он умеет писать чистый sql запросы
а мобильщик не умеет преобразовывать типы у себя
в общем печаль
skynin
Сообщения: 400
Зарегистрирован: 2017.12.12, 10:09

Re: Как настроить DAO?

Сообщение skynin »

user писал(а): 2020.07.29, 12:09 на yii сделано API
с ним работает мобильное приложение, важно сохранить типи данных
в каком виде отдается - json?
конвертируйте с преобразованием типов.
const ENCODE_OPTIONS = JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_NUMERIC_CHECK | JSON_HEX_TAG;
Json::encode($data, self::ENCODE_OPTIONS));
user писал(а): 2020.07.29, 12:09 с AR невозножно реализовать, т.к. лезет одинэсник, а он умеет писать чистый sql запросы
понятно. хочется странного - из-за того что есть неумеха - перелопачивать фреймворк под него.
user писал(а): 2020.07.29, 12:09 а мобильщик не умеет преобразовывать типы у себя
еще один, не в состоянии.
user писал(а): 2020.07.29, 12:09 в общем печаль
да, переписывать во фреймворке придется много.
с такой печалью - это только начало.

а через пару месяцев - как все это велосипедостроение поддерживать и развивать?
"Проект уже был рожден как классическое индуское лэгаси"

Но, все можно - перекрывайте классы DAO и моделей своими.
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
user
Сообщения: 159
Зарегистрирован: 2017.12.05, 16:55

Re: Как настроить DAO?

Сообщение user »

там в конфиге стандартные настройки

Код: Выделить всё

        'response' => [
            'formatters' => [
                \yii\web\Response::FORMAT_JSON => [
                    'class' => 'yii\web\JsonResponseFormatter',
                    'prettyPrint' => YII_DEBUG, 
                    'encodeOptions' => JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE,
                ],
            ],
        ],
JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE | JSON_NUMERIC_CHECK | JSON_HEX_TAG - помогло
боюсь это не надолго )
skynin
Сообщения: 400
Зарегистрирован: 2017.12.12, 10:09

Re: Как настроить DAO?

Сообщение skynin »

user писал(а): 2020.07.29, 13:38 там в конфиге стандартные настройки
да, точно.
просто это преобразование - поломает счета кредитных карт. и не всегда нужно.
поэтому у меня форматирование хитрее.

но да, забыл про эту опцию :)
Не желайте странного, и не будет у вас головной боли чтобы достичь этого странного.
Тем более что окажется что оно вам и не нужно было, странное это.
user
Сообщения: 159
Зарегистрирован: 2017.12.05, 16:55

Re: Как настроить DAO?

Сообщение user »

skynin писал(а): 2020.07.29, 14:20
user писал(а): 2020.07.29, 13:38 там в конфиге стандартные настройки
да, точно.
просто это преобразование - поломает счета кредитных карт. и не всегда нужно.
поэтому у меня форматирование хитрее.

но да, забыл про эту опцию :)
буду есть кактусы и плакать
и то что может поломать многое это факт
Ответить