Глупые вопросы новичка!!!

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
AlexSergeev1990
Сообщения: 109
Зарегистрирован: 2017.06.22, 10:43

Глупые вопросы новичка!!!

Сообщение AlexSergeev1990 »

Парни а как обращаться в activeRecord если название таблицы в переменная.
У меня в контроллере

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

 $model=ModelData::find()->all();
а в модели соотвественно:

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

    static function tableName()
    {
        return 'моя таблица';
    }
Просто у меня должно при выборе <select> ajax должен отправлять в контроллер название таблицы ... ajax работает сейчас со статичным названием таблицы..а мне надо с переменным.
т.е при каждом выборе select в model Должны подгружаться данные из соответсвующей таблицы.
извините новичок((
mkramer
Сообщения: 531
Зарегистрирован: 2014.12.14, 13:02

Re: Глупые вопросы новичка!!!

Сообщение mkramer »

ActiveRecord - это когда под каждую таблицу свой класс, вообще-то. Поэтому можно отправлять название класса и делать что-то вроде

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

$model = call_user_func("$class::find")->all();
Хотя это не выглядит идеальной архитектурой.
AlexSergeev1990
Сообщения: 109
Зарегистрирован: 2017.06.22, 10:43

Re: Глупые вопросы новичка!!!

Сообщение AlexSergeev1990 »

mkramer писал(а): 2017.07.24, 15:46 ActiveRecord - это когда под каждую таблицу свой класс, вообще-то. Поэтому можно отправлять название класса и делать что-то вроде

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

$model = call_user_func("$class::find")->all();
Хотя это не выглядит идеальной архитектурой.
А если другим методом без ActiveRecord? можешь пример написать? Просто у меня будет 50 таблиц с одиноковой структурой... че то не охота составлять 50 моделей для таблиц...
Аватара пользователя
S c
Сообщения: 883
Зарегистрирован: 2012.04.11, 14:46

Re: Глупые вопросы новичка!!!

Сообщение S c »

Просто у меня будет 50 таблиц с одиноковой структурой.
а вы уверены что вам нужны 50 таблиц?
mkramer
Сообщения: 531
Зарегистрирован: 2014.12.14, 13:02

Re: Глупые вопросы новичка!!!

Сообщение mkramer »

Так, напишите, какую задачу вы пытаетесь решить 50-ю таблицами с одинаковой структурой? Скорее всего, ошибка в архитектуре БД.
chesar
Сообщения: 514
Зарегистрирован: 2013.04.10, 17:49

Re: Глупые вопросы новичка!!!

Сообщение chesar »

Т.е. 50 одинаковых таблиц городить охото, а 50 моделей нет? =)
WalpeR
Сообщения: 64
Зарегистрирован: 2016.08.29, 17:21

Re: Глупые вопросы новичка!!!

Сообщение WalpeR »

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

Model::find->from('table_name')->one();
Вроде так должно работать
Аватара пользователя
Alexum
Сообщения: 683
Зарегистрирован: 2016.09.26, 10:00

Re: Глупые вопросы новичка!!!

Сообщение Alexum »

AlexSergeev1990 писал(а): 2017.07.24, 15:37 Просто у меня должно при выборе <select> ajax должен отправлять в контроллер название таблицы ...
Если уж решились на такое, то валидатор не забудьте написать, который проверит, что:
а) переданная строка является названием существующей таблицы
б) эту таблицу можно выводить, иначе любой желающий легко подменив значение откроет табличку user или чего похуже

Или можно сделать в модели промежуточный массив вида [ 1...N => ['table_name' => 'data1','option_title' => 'Данные'], по которому формировать select используя в качестве value числовой ключ и название из 'option_title'. В валидаторе проверять существование элемента и затем брать название таблицы из 'table_name'. Таким образом не придётся "светить" название таблиц.
Последний раз редактировалось Alexum 2017.07.25, 14:04, всего редактировалось 1 раз.
AlexSergeev1990
Сообщения: 109
Зарегистрирован: 2017.06.22, 10:43

Re: Глупые вопросы новичка!!!

Сообщение AlexSergeev1990 »

Alexum писал(а): 2017.07.25, 13:34
AlexSergeev1990 писал(а): 2017.07.24, 15:37 Просто у меня должно при выборе <select> ajax должен отправлять в контроллер название таблицы ...
Если уж решились на такое, то валидатор не забудьте написать, который проверит, что:
а) переданная строка является названием существующей таблицы
б) эту таблицу можно выводить, иначе любой желающий легко подменив значение откроет табличку user или чего похуже
Обезательно.....но у меня так и так перед названиями таблицы есть префиксы.....врядли так просто заменив они получат данные)
Ответить