【Laravel講座】Eloquentモデル

Eloquentモデル

※この記事は「2021年4月25日」に更新しました。

Laravel(ララベル)講座です。

前回は、データベースの設定について、紹介しました。

データベースの設定

【Laravel講座】データベースの設定

2019年7月12日

今回は、Eloquentモデルについて。

Laravel に搭載されている機能で、SQL を意識しなくても、直観的に操作できるようになります。

ぱそた
SE、Web制作、販売を経験した管理人が解説します。



Eloquentモデル

Eloquentモデルは、ORM(Object Relational Mapping)という機能を Laravel に実装したものです。

データベースとプログラミング言語のオブジェクト間を取り持つものです。

tinker を使う

tinker を使って、データベースを操作してみます。

tinker は、Laravel で対話的にプログラムを発行して扱えるシステムです。

まずは、下記コマンドを実行します。

php artisan tinker

レコードを挿入してみる

インスタンスを作成しましょう。

$test = new App\Test();

続いて、前回作成した title と content に適当なデータを挿入します。

$test->title = "title 1";
$test->content = "content 1";

そして、saveメソッドを使って、データを更新します。

$test->save();

このとき true と表示されれば、正常に終了していることがわかる。

今まで格納したデータを確認するには、下記コマンドを実行すれば良い。

App\Test::all();

ちゃんとデータが挿入されていることがわかるかと思います。

最後は、exit で tinker を終了させます。

ちなみに、下記を見ていただくと今までの流れがわかるかと思います。

tinker

SQLite で確認する

SQLite で実際にデータが更新されているか確認してみます。

sqlite3 database\database.sqlite

データベースに接続したら、下記コマンドを実行します。

select * from tests;

問題なくデータが挿入されているかと思います。

Mass Assignment の設定

Eloquentモデルの Mass Assignment 機能を使ってデータを挿入します。

ただし、設定をしないと MassAssignmentException というエラーが発生します。

appフォルダ内の Test.php を編集します。

Testクラスに以下の内容を追加しましょう。

class Test extends Model
{
    //
    protected $fillable = ['title', 'content'];
}

これで title と content に関しては、createメソッドでデータを挿入することができます。

App\Test::create(['title'=>'title 2', 'content'=>'content 2']);

早速、データを確認してみましょう。

App\Test::all();

問題なくデータが挿入されているかと思います。

Mass Assignment

最後に

いかがでしょうか。

Eloquentモデルは、データベースとモデルを対応させる機能です。

Laravel を使う場合は、データベースへのアプローチとして覚えておきましょう。

オブジェクト指向らしい操作ができるのも魅力だと思います。