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

У меня есть пакет медиа-библиотеки от spatie Мне нужно получить имя таблицы модели.

Я знаю, что могу сделать это:

public function getPath(Media $media) {
     $name = (new $media->model())->getTable()
}

Но это создает новый запрос. Мне не нужно создавать дополнительный запрос к базе данных. В табличных носителях у меня есть столбец model_type, где записи могут быть такими: App\ModelName. Может быть, я могу получить названия модели без запроса?

Ответы [ 3 ]

0 голосов
/ 19 апреля 2019

Существует ответ в github каркаса laravel: https://github.com/laravel/framework/issues/1436.Так что, похоже, вам нужно будет расширить модель медиа.Пример из github

class BaseModel extends Eloquent {

    public static function getTableName()
    {
        return with(new static)->getTable();
    }

}

class User extends BaseModel {

}


User::getTableName();
0 голосов
/ 19 апреля 2019

Изменение в вашей функции

Этот фрагмент кода должен использоваться в модели и в области действия модели

with(new static))->getTable();
0 голосов
/ 19 апреля 2019

Я не думаю, что "new model ()" создал запрос к базе данных, он просто порождает новый экземпляр объекта класса модели.Я не знаю библиотеку наизусть, но, учитывая, что это библиотека Spatie, она, вероятно, функционирует очень похоже на Eloquent, и у нее такое же поведение.

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