Модель ActiveRecod с переменчивым типом атрибута

Обсуждаем, как правильно строить приложения
Ответить
Райымбек
Сообщения: 10
Зарегистрирован: 2019.12.23, 15:38

Модель ActiveRecod с переменчивым типом атрибута

Сообщение Райымбек »

Доброго времени суток! Делаю проект на работе в yii2, это же мой первый проект с данным фреймворком. Но сразу же столкнулся с проблемами при реализации.
Имеется таблица в которой есть записи с показателями, у каждой записи собственная единица измерения (м.кв.,чел., единица, %, млн. руб., и т.д.). По этим показателям должны заполнятся данные в этих единицах. Задача состоит в том как создать модель ActiveRecord и форму для заполнения с подменой единиц измерения и способа обработки этих данных.

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

class Indicator extends ActiveRecord
{
    public static function tableName()
    {
        return 'indicators';
    }
}
Во вложениях прикрепил примерный набросок базы и таблицы по которой работаю
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Модель ActiveRecod с переменчивым типом атрибута

Сообщение yiiliveext »

В таблице показателей поля value и unit_id. В таблице типов unit поля id, name.
В таблице показателей связь unit через hasOne()
Райымбек
Сообщения: 10
Зарегистрирован: 2019.12.23, 15:38

Re: Модель ActiveRecod с переменчивым типом атрибута

Сообщение Райымбек »

А как правила валидации писать в модели и форме? Через сценарии?
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Модель ActiveRecod с переменчивым типом атрибута

Сообщение yiiliveext »

Валидации чего?
Райымбек
Сообщения: 10
Зарегистрирован: 2019.12.23, 15:38

Re: Модель ActiveRecod с переменчивым типом атрибута

Сообщение Райымбек »

Например в форме заполнения
Еднинца - целое число
Процент - float от 1 до 100
anton_z
Сообщения: 483
Зарегистрирован: 2017.01.15, 15:01

Re: Модель ActiveRecod с переменчивым типом атрибута

Сообщение anton_z »

Данных маловато для вдумчивого ответа. А показателей сколько? Их перечень меняется, если да, то как часто?
Райымбек
Сообщения: 10
Зарегистрирован: 2019.12.23, 15:38

Re: Модель ActiveRecod с переменчивым типом атрибута

Сообщение Райымбек »

Показателей за сотню, у каждого своя единица измерения. Они не часто меняются. Нужно один раз добавить все.
Единиц измерения около 5: Человек, единиц, процент, кв.м., млн.руб. в зависимости от изменении в показателях может появляться еще новые единицы.
anton_z
Сообщения: 483
Зарегистрирован: 2017.01.15, 15:01

Re: Модель ActiveRecod с переменчивым типом атрибута

Сообщение anton_z »

А просто отдельные колонки добавить не рассматривали, раз надо один раз добавить и всё? Запросы на поиск будут куща проще и работать юудут быстрее
Последний раз редактировалось anton_z 2019.12.26, 10:11, всего редактировалось 1 раз.
Райымбек
Сообщения: 10
Зарегистрирован: 2019.12.23, 15:38

Re: Модель ActiveRecod с переменчивым типом атрибута

Сообщение Райымбек »

Всем спасибо за помощь! Каждый ваш ответ дал понимание вариантов решения. Как закончу выложу что смог сделать!
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Модель ActiveRecod с переменчивым типом атрибута

Сообщение yiiliveext »

А какой сакральный смысл в array_filter в данном случае?
Без него должно работать точно так же.

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

return [
            $this->_characteristic->required ? ['value', 'required'] : false,
            $this->_characteristic->isString() ? ['value', 'string', 'max' => 255] : false,
            $this->_characteristic->isInteger() ? ['value', 'integer'] : false,
            $this->_characteristic->isFloat() ? ['value', 'number'] : false,
            ['value', 'safe'],
        ];
Аватара пользователя
ElisDN
Сообщения: 5841
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Модель ActiveRecod с переменчивым типом атрибута

Сообщение ElisDN »

yiiliveext писал(а): 2019.12.26, 11:41А какой сакральный смысл в array_filter в данном случае?
В том, что без него будет массив с тремя false.
yiiliveext
Сообщения: 910
Зарегистрирован: 2019.08.13, 01:49

Re: Модель ActiveRecod с переменчивым типом атрибута

Сообщение yiiliveext »

ElisDN писал(а): 2019.12.26, 15:02
yiiliveext писал(а): 2019.12.26, 11:41А какой сакральный смысл в array_filter в данном случае?
В том, что без него будет массив с тремя false.
Да, точно, торможу с утра :)
Ответить