Lab / Laravel

Шпаргалки: Laravel подстановка строки на ключ в БД

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

Предположим в нас есть событие, у события есть тип: Конференция, Семинар и Форум. Соответственно в базе ячейке БД type у нас хранятся ключи: type01, type02, type03 Как при выводе в шаблон сделать подстановку значения для каждой строки?

Для начала давайте в нашей модели создадим публичную переменную и туда положим наш массив строка-значение:

public $eventType =[
 'type01' =>'Конференция',
 'type02' =>'Семинар',
 'type03' =>'Форум',
];

Теперь дело осталось за малым, в шаблоне вызываем наш массив $eventType и в качестве ключа передаём текущее значение {{$event->eventType[$event->type]}}

@foreach($events as $event)
 {{$event->title}}
 {{$event->eventType[$event->type]}}
 {{$event->city}}
@endforeach

Вот и вся магия!

P.S Для связи подобнвм образом с другой моделью необходимо создать метод, например категории, и вызвать метод belongsto()

public function category() {
 return $this->belongsTo('App\Category');
}

Ну и в представлении остаётся вызвать сам метод и в качестве аргумента поле в связанной модели в нашем случае заголовок:

$event->category->title