Laravel $fillable, $hidden, $casts

hur-kyuh-leez·2022년 3월 8일
0
<?php

namespace App;

use Illuminate\Notifications\Notifiable;
use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;

class User extends Authenticatable
{
    use SoftDeletes;
    use Notifiable;

    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $fillable = [
        'name', 'email', 'password',
    ];

    /**
     * The attributes that should be hidden for arrays.
     *
     * @var array
     */
    protected $hidden = [
        'password', 'remember_token',
    ];

    /**
     * The attributes that should be cast to native types.
     *
     * @var array
     */
    protected $casts = [
        'email_verified_at' => 'datetime',
    ];
}

Laravel 모델을 둘러보다 $casts 라는 이해 할 수 없는 변수가 있어 찾아 봤다.

출처: https://laravel.com/docs/9.x/eloquent-mutators

"$casts property provides a convenient method of converting attributes to common data types."

영어로 쓰여져 있는 그대로 datetime 같은 common data types를 쉽게 쓸 수 있도록 conversion을 돕는다.
쓸 수 있는 data types는 아래와 같다.

array
AsStringable::class
boolean
collection
date
datetime
immutable_date
immutable_datetime
decimal:<digits>
double
encrypted
encrypted:array
encrypted:collection
encrypted:object
float
integer
object
real
string
timestamp

ps. 참고로 password가 fillable인 동시에 hidden 인 것은 아무래도 처음 만들 때는 fill이 가능 해야 되고 그 이후에는 접근 불가 하게 해야 되니깐...

profile
벨로그에 생각을 임시로 저장합니다. 틀린건 틀렸다고 해주세요 :) 그래야 논리 학습이 강화됩니다.

0개의 댓글