現役フリーランスエンジニアが運営するテックメディア。日々の業務で得た知識を発信していきます!

  1. バックエンド
  2. 6964 view

LaravelのEloquentモデルを理解して使ってみよう!

最終更新日:2019/04/02

本記事では、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の機能は他にもたくさんあるのですが、とりあえず今回は導入ということでここまでにします。

次回はリソースコントローラです!

The following two tabs change content below.
WINDII

WINDII

WINDII(ウィンディ)は、フリーランスエンジニアが運営するテックメディアです。 日々の業務で得た知見を、皆さんに役立つコンテンツにして発信していくので応援よろしくお願いします! また、Slackで無料コミュニティも運営しています。たくさんのエンジニアが参加していて、プログラミングの相談や雑談などをしている楽しいコミュニティなので、興味ある方はぜひお気軽にご参加ください。 Slackコミュニティはこちらから

バックエンドの最近記事

  1. 人気急上昇中のLaravelをはじめよう!【徹底解説】

  2. Laravelの認可を理解して実装してみよう!

  3. Laravelのシーティング(Seeding)機能をマスターしよう!

  4. Laravelのメール確認機能を設定してみよう!

  5. Laravelの認証機能を設定してみよう!

関連記事

コメント

  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

PAGE TOP