※この記事は「2021年4月25日」に更新しました。
Laravel(ララベル)講座です。
前回は、データベースの設定について、紹介しました。
今回は、Eloquentモデルについて。
Laravel に搭載されている機能で、SQL を意識しなくても、直観的に操作できるようになります。
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 を終了させます。
ちなみに、下記を見ていただくと今までの流れがわかるかと思います。
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();
問題なくデータが挿入されているかと思います。
最後に
いかがでしょうか。
Eloquentモデルは、データベースとモデルを対応させる機能です。
Laravel を使う場合は、データベースへのアプローチとして覚えておきましょう。
オブジェクト指向らしい操作ができるのも魅力だと思います。