laravel_モデルについて学ぶ

07モデルについて学ぶ

モデルはMVCモデルのMにあたるかなり大切な部分になります。

しっかり理解するようにしましょう。

モデルとは?

Laravelでのモデルは、データベース(DB)とのやり取りを担当する重要な役割を持つクラスです。
データの追加、更新、取得、削除、並び替えなど、DBに関する操作全般を簡単に扱えるようにするための機能を提供します。

基本的に、1つのデータベーステーブルに対して1つのモデルが対応します。
これにより、モデルを通じてDB操作をシンプルに実現できます。

モデルの作成方法

LaravelのModelはartisanコマンドで簡単に作成することができます。

php artisan make:model モデル名
// Memoモデルの場合(コマンドを実行)
php artisan make:model Memo

Modelの生成先を指定したい場合はModel名の前にパスを指定します。

php artisan make:model Models\User

ちなみにModelを削除したい場合は、オプションが用意されていないため、手動でファイルを削除する必要があります。

作成されたモデルを見てみましょう。

<?php
namespace App\\Models;
use Illuminate\\Database\\Eloquent\\Factories\\HasFactory;
use Illuminate\\Database\\Eloquent\\Model;
class Memo extends Model
{
    use HasFactory;
    //
}

このメモアプリではMemoモデルには記述するコードは不要です。

Memoモデルが存在するだけでmemosテーブルにアクセスできるようになります。

モデルは、データベースと接続するために必要な機能を提供する重要な要素です。原則として、1つのテーブルに対して1つのモデルを作成することが推奨されます。

例えば、class Message extends Model { // } のように記述されたクラスは一見空のように見えるかもしれません。しかし、実際には親クラスである Illuminate\Database\Eloquent\Model に多くの関数やプロパティがあらかじめ定義されています。

そのため、Memo モデルに特有の機能が必要な場合だけ、// の部分に独自の関数を追加する形で拡張することが可能です。

さらに、Laravelの公式ドキュメントを参照すると、Model クラスには非常に多くの便利な関数やプロパティが用意されていることがわかります。

補足ですが、Laravelのモデルは use Illuminate\Database\Eloquent\Model; で示される通り、Eloquent(エロクエント)モデルと呼ばれます。特に意識する必要はありませんが、Laravelの文脈ではモデルのことをEloquentと表現する場合があるので、この点を覚えておくと良いでしょう。

モデルの命名規則

LaravelのModelには命名規則があります。

例えば、テーブル名がusersの場合、Model名はUserになります。

テーブル名を単数形にしたものがModel名となり、自動的にテーブルを操作することができるようになります。

この命名規則以外にモデル名を設定したい場合は、以下のように$tableにテーブル名を設定します。

例)テーブル名が「premium_users」の時

**<?php 
namespace App; 
use Illuminate\\Database\\Eloquent\\Model; 
class User extends Model{    
    protected $table = 'premium_users';
}**

このようなカスタマイズ方法は、大抵はLaravelのドキュメントにて説明されていますが、中にはコアの実装を見ることで方法を知るケースもあるので、Laravelのコアのソースを時間がある時にでも読んで見ると良いでしょう。


投稿日

カテゴリー:

投稿者:

タグ:

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です