【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',
];モデルから取得できずに、セキュリティ上の理由やデータのプライバシーを保護するために使用されます。







