【Laravel入門】Modelの作成と書き方

Laravel,PHP

ミニマリスト_カミ

kamiです。
TwitterYoutubeもやってます。

今回は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_atupdated_atのタイムスタンプを自動的に更新するかどうかを指定します。

public $timestamps = false;

$dateFormat

モデルの日付属性のフォーマットを指定します。
「created_at」や「updated_at」で使用します。

protected $dateFormat = 'Y-m-d H:i:s';

$hidden

モデルのインスタンスが配列や JSON 形式でシリアライズされたときに、非表示にする属性を指定します。

protected $hidden = [
    'password',
    'token',
];

モデルから取得できずに、セキュリティ上の理由やデータのプライバシーを保護するために使用されます。

Laravel,PHPLaravel

Posted by kami