本記事では、LaravelのEloquentモデルとは何かをわかりやすく解説していきます。
以下の記事の続きです。まだ読んでいない方はぜひご一読ください!
初心者の方でもLaravelの動作環境を簡単に作れるWINDIIオリジナルのソースコードを用意したので、実際に動かして学ぶとより深く理解できるようになります!
以下の記事を参考にご活用ください。
目次
LaravelのEloquentモデルってなに?
Eloquentは、SQLをできるだけ書くことなく、簡潔にデータベースにアクセスできるような仕組みです。
前回のマイグレーションの章ではテーブルの作成を行いましたが、そこにデータを保存したり、取り出したり、削除したりできます。
SQLを書けばいいじゃん!って思う方もいると思いますが、よくある処理であればEloquentで書くほうがずっと綺麗に書けるので、コードが読みやすくなります。
ぜひ使い方をマスターしましょう!
Eloquentを使ってみる
実際に使ってみるとよりわかりやすいのでさっそく始めていきましょう!
今回は例として、タイトルと本文をもつ記事を保存するテーブルを作り操作していくことにします。
docker-compose exec app bash
以下のコマンドを実行してみましょう。
php artisan make:model Article -m
後ろの-m は「マイグレーションファイルも一緒に作成して!」という意味です。
実行できたら2つのファイルが作成されます。
app/Article.php
database/migrations/XXXX_create_articles_table.php
まずはマイグレーションファイルを書き上げます。
database/migrations/XXXX_create_articles_table.php を以下のようにしましょう。
database/migrations/XXXX_create_articles_table.php
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateArticlesTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('articles', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('title'); // 追加
$table->string('content'); // 追加
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('articles');
}
}
マイグレーションに関してわからない場合は以下の記事で解説しているので未読の人はぜひチェックしてみてください!
書き上げたら、以下のコマンドでマイグレーションを実行します。
php artisan migrate
データベースを確認してarticles テーブルが作成されているのを確認しましょう。
もちろん中身はなにもありません。
次の章ではEloquentモデルを使ってデータを読み書きしてみましょう!
tinker上でEloquentを使ってデータを読み書きする
お待たせしました。それでは、さっそくEloquentを使ってみましょう。
tinkerを使ってEloquentを操作します。
「え?tinkerってなに?」って方向けに説明しておきますと、tinkerはphpを対話式で実行するための仕組みです。
使ってみたほうが早いのでさっそく使ってみましょう!
以下のコマンドでtinkerを立ち上げます。
php artisan tinker
以下のような感じでtinkerが立ち上がります。
とりあえずhello world!をしておきましょう!
echo "hello world!";
このような感じでPHPを実行することができます。ちょっと動作確認してみたいときに重宝するので覚えていきましょう。
それでは、Eloquentの話に戻ります。
データの作成
さっそく以下のような感じで記事を保存する処理を書いてみましょう。
use App\Article;
$article = new Article;
$article->title = "title1";
$article->content = "content1";
$article->save();
データベースを見てみると、以下のようになっているはずです。
投稿がちゃんと保存されていますね!
データの読みこみ
今度はこのデータを取り出してみましょう。
use App\Article;
$post = Article::find(1);
idが1番の投稿を取り出しています。以下のように表示されるはずです。
また条件も指定してデータを取り出すことができます。
$post = Article::where('title', 'title1')->first();
ここではtitleカラムの値がtitle1 に一致している投稿を取得しています。
データの更新
次にデータを更新してみましょう。
$post = Article::find(1);
$post->title = "title2";
$post->save();
tinker上では以下のように表示されると思います。
>>> $post = Article::find(1);
=> App\Article {#2923
id: 1,
title: "title1",
content: "content1",
created_at: "2019-03-17 05:02:14",
updated_at: "2019-03-17 05:02:14",
}
>>> $post->title = "title2";
=> "title2"
>>> $post->save();
=> true
>>> $post = Article::find(1);
=> App\Article {#2914
id: 1,
title: "title2",
content: "content1",
created_at: "2019-03-17 05:02:14",
updated_at: "2019-03-17 05:18:14",
}
>>>
ちゃんと更新されましたね。
データの削除
最後にデータの削除です。
$post = Article::find(1);
$post->delete();
tinkerでの動作結果
>>> $post = Article::find(1);
=> App\Article {#2931
id: 1,
title: "title2",
content: "content1",
created_at: "2019-03-17 05:02:14",
updated_at: "2019-03-17 05:18:14",
}
>>> $post->delete();
=> true
データがなくなってますね。
いかがでしょうか。Eloquentでかくとスッキリとデータの読み書きができているのがわかりますね。
Eloquentの機能は他にもたくさんあるのですが、とりあえず今回は導入ということでここまでにします。
次回はリソースコントローラです!

WINDII

最新記事 by WINDII (全て見る)
- Canvaが最高すぎる。使い方を完全ガイド【チュートリアルあり】 - 2019年5月14日
- 人気急上昇中のLaravelをはじめよう!【徹底解説】 - 2019年4月23日
- Laravelの認可を理解して実装してみよう! - 2019年3月29日
この記事へのコメントはありません。