@lolka02

Как вызвать модель по сроке?

Известен id и название модели в строчном виде. допустим:
use common\models\Article
.....
$id = 2;
$model = 'Article';
$model::findOne($id); //как то так вызвать.


планирую записать id и название моделей в одной таблице, потом сделать выборку по необходимости из этих данных. можно ли без всяких условий сделать универсальный код?
  • Вопрос задан
  • 83 просмотра
Решения вопроса 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Вам надо получить класс по названию, а потом уже обратиться к его статическому свойству. Как-то так:
$id = 2;
$c_name = 'common\models\Article';
$obj = new $c_name();
$obj::findOne($id);

или
$c_name = 'common\models\Article';
$obj = Yii::createObject($c_name);
$obj::findOne($id);

или
$obj = Yii::createObject([
            'class' => 'common\models\Article',
            'some_attr' => 'алюминий',
             ]);
$obj::findOne($id);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы