Динамическая смена таблиц в 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();