Задать вопрос
Psychosynthesis
@Psychosynthesis
Fullstack developer and radio engineer

Есть ли нормальный способ получить все поля модели Eloquent, без чтения из базы?

Собственно основной вопрос в заголовке.

Вероятно в систему будут добавляться модели, при этом поля у них, что логично, могут различаться. В одном из контроллеров появилась необходимость работать с полями моделей (нужно знать их имя и тип), соответственно возник вопрос как это корректно сделать.

Я предполагаю, что в Illuminate\Database\Eloquent\Model есть какой-то способ указать в определении модели какие поля являются доступными, но не знаю верный ли это подход? В том смысле, что если я укажу эти поля в определении модели, а в базе они ей соответствовать не будут, это будто как-то не особо правильно.

Почему уточнил про "нормальный" способ - очевидный вариант, приходящий в голову это запросить один экземпляр из базы и смотреть его поля, но это кажется костылём.

Laravel 5.8
  • Вопрос задан
  • 324 просмотра
Подписаться 1 Средний Комментировать
Решения вопроса 1
JhaoDa
@JhaoDa
LaravelRUS Team
Нет.

Только описывать их в модели аннотациями/атрибутами и держать этот список в актуальности. Или вот ide-helper умеет добавлять докблок со свойствами, который парсит из БД. Но всё это разной степени костылизация.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
pLavrenov
@pLavrenov
Разработка сайтов
protected $fillable = [
    'platform_id',
    'user_id',
];

public static function getFillableAttributes(): array
{
    return (new static)->getFillable();
}


Model::getFillableAttributes()
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы