본문 바로가기
카테고리 없음

모델에 const 상수로 데이터 정의

by Sein_ 2023. 12. 12.
728x90

 

사용이유: 

- 미사용시 하나의 값이 변경이 될 경우 전부 텍스트를 검색하여 하나하나 변경을 해줘야한다.

- 상수로 정의해두면  모델에서 한눈에 변경해야될 부분을 찾을 수 있다.

- 또한 배열로 정의해두었다가 in_array 등으로 포함여부를 확인할 수 있고 모델에서 배열 내용을 쉽게 추가, 삭제 가능하다.

 

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class YourModel extends Model
{
    // 정의한 상수
    public const TYPE_HOME_SHOPPING = 'HOME_SHOPPING';
    public const TYPE_SOCIAL = 'SOCIAL';
    public const TYPE_OPEN_MARKET = 'OPEN_MARKET';

    // 정의한 배열
    public const TYPES = [
        self::TYPE_HOME_SHOPPING => '홈쇼핑',
        self::TYPE_SOCIAL => '소셜',
        self::TYPE_OPEN_MARKET => '오픈마켓',
    ];

    public const SELL_TYPES = [
        self::TYPE_HOME_SHOPPING,
        self::TYPE_SOCIAL,
        self::TYPE_OPEN_MARKET,
    ];
}

 

<?php

use App\Models\YourModel;

// 모델을 사용하여 데이터베이스에서 값을 가져오는 예제
$dataFromDatabase = YourModel::find(1);

// 가져온 값의 유형에 따라 해당 상수 또는 배열 사용
if ($dataFromDatabase->type === YourModel::TYPE_HOME_SHOPPING) {
    echo "이 제품은 홈쇼핑에서 구매되었습니다.";
} elseif ($dataFromDatabase->type === YourModel::TYPE_SOCIAL) {
    echo "이 제품은 소셜에서 소개되었습니다.";
} elseif ($dataFromDatabase->type === YourModel::TYPE_OPEN_MARKET) {
    echo "이 제품은 오픈마켓에서 구매 가능합니다.";
} else {
    echo "유효하지 않은 유형입니다.";
}

// 유형에 해당하는 사람이 읽기 쉬운 이름을 가져오는 예제
$readableTypeName = YourModel::TYPES[$dataFromDatabase->type];
echo "이 제품은 '{$readableTypeName}' 유형입니다.";

 

 

- 특정 기준으로 여러 상수를 배열화하여 사용

<?php

        $socialCode = [
            Kakao::CODE_KAKAO => '카카오톡',
            Grip::CODE_GRIP => '그립',
            Tmon::CODE_TMON => '티몬',
        ];
    ?>

    <div class="btn btn-primary btn-xs" id="btn_order_add">
        <i class="fa fa-comment-o"></i> <?=$socialCode[$code_channel]?> 결제 추가
    </div>