【Laravel入門】Modelの作成と書き方
今回はLaravelのModelの作成と書き方の紹介です。
Modelとは?
Model(モデル)は、MVC(Model-View-Controller)アーキテクチャの一部であり、アプリケーションのデータを扱う部分を指します。
モデルは、データの取得、変更、保存、削除などのデータ処理の責任を担います。
一般的に、データベース内のテーブルと1対1の関係にあります。
Laravelにおける “Model" は、Eloquent ORM(Object-Relational Mapping[オーアールマッパー])によって提供される、データベーステーブルのレコードをオブジェクトとして扱うためのクラスです。
モデルは通常、アプリケーション内の特定のデータベーステーブルを表し、そのテーブルのレコードにアクセスするための方法を提供します。
データベーステーブルに対応するプロパティやメソッドを持ち、データベースとのやり取りを簡単に行うことができます。
また、モデルには、データのバリデーションやリレーションシップの定義、アクセッサやミューテータの定義など、様々な機能を追加することもできます。
簡単に言えば、モデルはデータベーステーブルとのやり取りを抽象化したものであり、アプリケーション内でデータを効果的に管理するための重要な部分です。
Modelの作成方法
Modelの作成はartisanのmakeコマンドで作成します。
成功すると「Model」ディレクトリ配下にモデルが作成されます。
php artisan make:model モデル名
スポンサードサーチ
モデルの書き方
$table
モデルが対応するデータベースのテーブル名を指定します。
protected $table = 'users';
$primaryKey
モデルの主キー(primary key)を指定します。
protected $primaryKey = 'user_id';
$fillable
モデルの属性の代入を許可する属性を指定します。
protected $fillable = ['name', 'email', 'password'];
代入を許可すると、モデルの属性に対して値を代入することができます。
$user = new User();
$user->name = 'kami';
$user->email = 'kami@example.com';
$user->password = bcrypt('password');
$user->save();
$guarded
代入を許可しない属性を指定することもできます。
protected $guarded = [];
許可しない場合は$fillableとは異なり、一括代入による代入から保護します。
よって、$fillableのようにモデルに直接代入できなくなります。
$user = new User();
$user->name = 'kami'; // 代入が許可されていない
$user->email = 'kami@example.com'; // 代入が許可されていない
$user->password = bcrypt('password'); // 代入が許可されていない
$user->save();
使用方法について
新しいUesrオブジェクトが生成されただけで、属性には値が代入されていないので、$guarded
プロパティに関係なく、正常に動作します。
$user = new User();
$user->name;
モデルが保存された後で、属性に値が設定されるので、$guarded
プロパティに関係なく、正常に動作します。
$user = new User();
$user->save();
$user->name;
この例ではUserオブジェクト生成後に、saveして代入しているので代入が許可されます。
$user = new User();
$user->save();
$user->name = 'kami'; // 保存後に属性を設定する
$user->email = 'kami@example.com';
$user->password = bcrypt('password');
$user->save(); // これでデータベースに保存されます
$casts
モデルの属性をデータベースに保存する前に、特定のデータ型にキャストするためのマップを提供します。
protected $casts = [
'is_admin' => 'boolean',
'age' => 'integer',
'settings' => 'array',
];
簡単に言うと型変更です。
$incrementin
モデルが自動増分されるプライマリキーを持つかどうかを示します。
public $incrementing = false;
オートインクリメントまたは整数値ではない値を主キーを使う場合はfalseにします。
オートインクリメントの場合はtrueです。
$keyType
デルのプライマリキーのデータ型を指定します。
protected $keyType = 'string';
$timestamps
モデルがcreated_at
とupdated_at
のタイムスタンプを自動的に更新するかどうかを指定します。
public $timestamps = false;
$dateFormat
モデルの日付属性のフォーマットを指定します。「created_at」や
「updated_at
」で使用します。
protected $dateFormat = 'Y-m-d H:i:s';
$hidden
モデルのインスタンスが配列や JSON 形式でシリアライズされたときに、非表示にする属性を指定します。
protected $hidden = [
'password',
'token',
];
モデルから取得できずに、セキュリティ上の理由やデータのプライバシーを保護するために使用されます。