LoginSignup
0
0

More than 3 years have passed since last update.

【Laravel】型変換をする/$cast

Last updated at Posted at 2020-08-15

php7以降、型変換ができるよ!っていうのをこの本読んでて学んだので、
https://www.amazon.co.jp/dp/B07Q9PPP2T/ref=cm_sw_r_tw_dp_x_UHaoFbREBEZA2
laravelのテストサイトに導入してみようとしたところ、laravelではモデル側で型宣言できる機能があるとのこと。
その書き方を試してみました。

書く場所

モデル.phpの中

書き方

モデルの中、protected $casts = [ ];の中に設定。
例えば、投稿機能のあるアプリにポスト(Post)モデルがあったとします。

class Post extends Model
{
    protected $guarded = ['id'];

    public function user(){
      return $this->belongsTo(User::class);
    }
//中略
//ーーーーーーーーーー
//この中で、こんなふうに書きます。
//こうすることで、postモデルの中で投稿があった際、またDBからデータを読み込んだときに
//「id」はinteger型で保存、出力のみ許可し、「title」はstring型のみ保存、出力を許可します。
    protected $casts = [
      'id' => 'integer',
      'title' => 'string'
    ];

}

効果

各種データに対して予め型を宣言しておくことで、意図しない型が入ってきたときに早期にエラーなどを発見できるとのこと。
例えば

アプリをつくってく中で、フォームの「時間」の投稿入力欄で
「投稿側」では「数字」ではなく、誤って「テキスト」を受け付けるようにしちゃった場合。

なんかにいいのかも。
モデル側で自動で数字に変換する処理があれば時間的なテキストであれば時間になるし、
全く時間ぽくないテキストであればエラーとして早めに気づける。。。

ということなのかなと思ってます。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0