Динамическая смена таблиц в Eloquent

Задача:

Динамически меняя название таблиц в моделях Eloquent Laravel'a получать записи из базы данных цепочкой запросов.

Для того что бы описанный ниже метод работал во всех моделях базы данных, я создавал родительский класс наследник класса модели Eloquent.

Но для простоты изложения тут необходимая функция будет расположена непосредственно в рабочей модели.

Имеем:

Модель Eloquent, назовем ее User. Она работает с таблицей users из нашей базы данных.

Решение:

В классе User создаем такую функцию, которая и будет динамически менять название рабочей таблицы.

public static function fromTable($table, $parms = Array()){
$res = null;
if (class_exists($table)){
$res = new $table($parms);
} else {
$res = new static($parms);
$res->setTable($table);
}
return $res;
}

Теперь мы сможем динамически изменять название таблицы, прямо во время запроса.

User::fromTable('cool_users')->get();