Eloquent (БЕЗ Laravel) получает данные из таблицы с динамическим именем - PullRequest
0 голосов
/ 14 мая 2018

Я уверен, что это очень простой вопрос, но на всю жизнь я застрял здесь - мы используем Eloquent вне Laravel из-за ограничений PHP.У меня есть приложение для отслеживания заявок в службу поддержки, которое я пытаюсь обновить.Структура данных этого приложения такова, что каждому заявке присваивается UUID при отправке, и создается таблица с этим UUID в качестве его имени, и все изменения в заявке отслеживаются как новые записи в этой таблице.

ПослеВ некоторых уроках по Eloquent наши модели и контроллеры настроены и работают, но для каждого я вижу, что я определяю имя таблицы в самой модели.То есть наша модель билетов

namespace Models;
use \Illuminate\Database\Eloquent\Model;

class Ticket extends Model {
   protected $table = 'tickets';
   protected $fillable = [table columns here];
}

и все, что вызывается в контроллере билетов правильно и успешно читает и записывает данные в нашу таблицу tickets.

Итак ... мой вопросэто: как бы я пошел о чтении / записи / создании / удалении этих ранее упомянутых таблиц UUID?

Я пробовал встроенный селектор таблиц (то есть - DB::table(uuid here) и DB::setTable(uuid here), но длябезрезультатно. Я получаю Fatal error: Call to undefined method Models\Database::setTable()

Мне нужна модель / контроллер, которую я могу использовать для ЛЮБОЙ таблицы с динамическим именем.

1 Ответ

0 голосов
/ 14 мая 2018

Вы можете создать универсальную модель и динамически установить имя таблицы, например:

namespace Models;
use \Illuminate\Database\Eloquent\Model;

class FormerUUIDTicket extends Model {
   protected $table = 'some_table';
   protected $fillable = [table columns here];
}

class SomeController
{
    public function someAction()
    {
        $uuid = $_POST['uuid_field']; //some uuid, the table name
        $model = new FormerUUIDTicket;
        $model->setTable($uuid);
        return $model->get(); //do anything using eloquent with proper table
    }
}

Убедитесь, что вы всегда устанавливаете имя таблицы перед использованием, иначе это не удастся.Также не используйте статическую функцию по той же причине.

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