jey_val_star
@jey_val_star
Программист

Laravel 5: как лучше выводить данные из бд?

Суть такая
В бд ест колонка status (integer)
И возможные значения в ней
1- новый заказ
2 - обработан
3 - выполнен
4 - отказ

Нужно вывести эти значения к тому же выделять цветом
Новый - зелёный
Выполнен - синий
Отказ - красный

Как лучше организовать вывод?
  • Вопрос задан
  • 185 просмотров
Решения вопроса 1
Fernus
@Fernus
Техник - Механик :)
class Order extends Model
{

    // ... Тут стандартное начало модели
    
    protected $appends = [
        'status_color'
    ];

    
    public function getStatusColorAttribute() {

        switch($this->status) {
        
            case 1:
            
                return 'зелёный';
            
            break;
            
            
            case 2:
            
                return 'синий';
            
            break;
            
            case 3:
            
                return 'красный';
            
            break;
            
            default:
            
                return 'хз';
            
            break;
        
        
        }
    }

}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
JhaoDa
@JhaoDa
LaravelRUS Team
if (status === 1) {
    echo '<зелёный>Новый</зелёный>';
} elseif (status === 2) {
    echo '<синий>Выполнен</синий>';
} elseif (status === 3) {
    echo '<красный>Отказ</красный>';
} else {
    echo 'Што?';
}
Ответ написан
@jazzus
Не нужны здесь никакие геттеры. Автору нужно освоить связи Ларавел и записывать всю необходимую инфу в бд.

Делаем таблицу statuses с полями title, color и любые другие, предусмотренные тз
Забиваем статусы
В модели Order делаем belongsTo связь status и в запросе к заказам цепляем статусы через with

$orders = Order::with('status')
    ->get();


используем в шаблоне $order->statsus->title $order->statsus->color и тд
В таком варианте ты сможешь не только это все удобно юзать, не обращаясь тысячу раз к геттерам, но и использовать статусы для других моделей и в другой логике
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы