ID , 'noindex' , true)){ echo ''; } ?>

(Laravel) Eloquentの使い方を解説

(Laravel) Eloquentの使い方を解説

 

本記事では、Laravelについて
Eloquentについての解説をしていく

 

(Laravel) Eloquentとは

LaravelのEloquentとは、
Laravelに内蔵されている、ORMの機能のこと

 

ORMとは

ORMとは
Object-Relational-Mappingの略で、
データベースのレコードをプログラミング言語のオブジェクトとして扱えるようにするための仕組みのことだ。

https://ja.wikipedia.org/wiki/%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E9%96%A2%E4%BF%82%E3%83%9E%E3%83%83%E3%83%94%E3%83%B3%E3%82%B0

 

Eloquentとモデル

Eloquentでは、
「モデル」というクラスを定義し、これを利用してデータベース操作を行うように設計されている。

 

モデルの作成

モデルの作成コマンドは以下

php artisan make:model モデル名

 

Peopleテーブルを操作するモデルを作成するなら、モデル名はPersonにする。
テーブル名が複数型なのに対して、モデル名は単数型にするという決まりがある。

 

モデルファイルの配置場所

下記フォルダにモデル名.phpというファイルが作成される。

app/

 

モデルファイルのデフォルトの記述

<?php

namespace App;
use Illuminate\Database\Eloquent\Model;

class Person extends Model
{

    //

}

 

 

モデルに紐づくコントローラを作成する

作成したモデルクラスを使用するためには、
それに紐づくコントローラを作成する必要がある。

コントローラの作成書式は下記

php artisn make:controller 〇〇Controller

 

〇〇には、紐付けるモデルクラス名(単数形を指定する。

 

 

作成したコントローラから、全レコードを取得する

use App\Person //Personクラスを使用
}
    public function index(Request $request) {

        $item = Person::all();
        return view('person.index' , ['items' => $items]);
    }
}

 

モデルクラス::メソッド名として実行する。
上記では「Personクラスの、allメソッド」を呼び出すことで、
peopleテーブルの全レコードを取得している。

なぜ「Person::」と書くだけで、「peopleテーブル」を自動的に対象にしてくれるかというと、laravelでは、モデルクラス(単数)に紐づくテーブル名(複数名)を引くというルールがあるから。

取得結果の全レコードは、実体はレコード管理クラスのインスタンスであり、
アロー演算子で、レコードの情報や、モデルクラスのメソッドにアクセス可能となる。

 

以下は、インスタンスから、レコード情報を取得する例

@foreach ($items as $item)
    <tr>
        <td>{{ $item->name }}</td>
        <td>{{ $item->mail }}</td>
        <td>{{ $item->age }}</td>
    </tr>
@endforeach

 

 

モデルクラスを拡張する

モデルクラスはプロパティやメソッドを独自に拡張することができる
作成したモデルクラス内にメソッドを追記する

//例
public function getId()
{
    return $this->id
}

 

作成したメソッドは、モデルクラスインスタンスからアクセスできる

@foreach ($items as $item)
    <tr>
        <td>{{ $item->getId() }}</td> //拡張したモデルクラスのメソッドを呼び出す
    </tr>
@endforeach

 

 

モデルの検索結果は、配列ではなく、各レコードの「インスタンス」

Person::all();などして帰ってくる値は、
連想配列ではなく、検索結果の各レコードのインスタンス

Personという単数型のクラスなのはこの点で合致がいく。
各レコードがインスタンスなので、上記の例で行けば、
インスタンス->getId()とすれば該当のインスタンスのIDがゲットできる。

 

関連記事

(Laravel) マイグレーション実施手順
(Docker×Laravel) データベース作成〜マイグレーションする手順
(Laravel) シーディングの 実行手順

http://laravel.jp/

https://readouble.com/laravel/8.x/ja/eloquent.html

https://qiita.com/shosho/items/5ca6bdb880b130260586

 

 

 

記事が気に入った方はシェアをお願いします!

コメントを残す

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