Получить модель по имени таблицы в yii2 - PullRequest
0 голосов
/ 29 января 2019

У меня есть один метод в нескольких моделях, реализованный по-разному.Я знаю только имя таблицы в базе данных.Я должен найти модель этой таблицы.Как это сделать?

interface BaseIndexedModel
{
    public function writeSometext();
}

и некоторые модели реализуют это.Пример

class First extends \yii\db\ActiveRecord implements BaseIndexedModel
{
    public function writeSometext(){
       return "1";
    }
}

class Second extends \yii\db\ActiveRecord implements BaseIndexedModel
{
    public function writeSometext(){
       return "2";
    }
}

Далее по определенному событию мне нужно вызвать нужную модель и этот метод.Но когда я позвоню, я узнаю только таблицу базы данных, но не модель.

Если таблица «первая», First::writeSometext(); Если таблица «вторая», Second:: writeSometext();

1 Ответ

0 голосов
/ 30 января 2019

Вы можете сделать это таким образом, когда получите имя таблицы

public function getModelName($table_name) {
    $table_name = 'first_table';  
    // $table_name = 'first';// if name is single word then comment the next line
    $table_split = explode("_",$table_name);
    $model = ucfirst($table_split[0]).ucfirst($table_split[1]);
    return $model;
}

, вы можете вызвать эту функцию и проверить, существует ли она

$model = getModelName($table_name);
var_dump($model);
...