初めてのLaravel 5.1 : (10) Eloquent

前回、Articleモデルを作成し、Eloquentの機能を使ってモデルを操作して見ました。今回も引き続き、Eloquentの機能を試してみます。

Articlesテーブルのスキーマの復習

モデルの操作を行っていく前に、Articlesテーブルのスキーマを復習しておきます。

CREATE TABLE "articles" (
    "id" integer not null primary key autoincrement,
    "title" varchar not null,
    "body" text not null,
    "published_at" datetime null,
    "created_at" datetime not null,
    "updated_at" datetime not null
);

モデルの操作

tinker を使って、Articleモデルを操作してみます。

php artisan tinker

ここ以下は tinker上での操作です。

データをもう一件追加

>>> $article = new App\Article;
>>> $article->title = '2件目の記事';
>>> $article->body = 'ほげほげ';
>>> $article->published_at = Carbon\Carbon::now();
>>> $article->save();
>>> App\Article::all()->toArray();
=> [
       [
           "id"           => "1",
           "title"        => "はじめてのタイトル",
           "body"         => "かくかくしかじか",
           "created_at"   => "2015-02-22 21:08:16",
           "updated_at"   => "2015-02-22 21:08:16",
           "published_at" => "2015-02-22 20:47:07"
       ],
       [
           "id"           => "2",
           "title"        => "2件目の記事",
           "body"         => "ほげほげ",
           "created_at"   => "2015-02-23 07:35:46",
           "updated_at"   => "2015-02-23 07:35:46",
           "published_at" => "2015-02-23 07:35:35"
       ]
   ]
>>> 

idでレコードを取得

>>> App\Article::find(1)->toArray();
=> [
       "id"           => "1",
       "title"        => "はじめてのタイトル",
       "body"         => "かくかくしかじか",
       "created_at"   => "2015-02-22 21:08:16",
       "updated_at"   => "2015-02-22 21:08:16",
       "published_at" => "2015-02-22 20:47:07"
   ]
>>> App\Article::find(2)->toArray();
=> [
       "id"           => "2",
       "title"        => "2件目の記事",
       "body"         => "ほげほげ",
       "created_at"   => "2015-02-23 07:35:46",
       "updated_at"   => "2015-02-23 07:35:46",
       "published_at" => "2015-02-23 07:35:35"
   ]

idでレコードを取得 or 例外を投げる

>>> App\Article::findOrFail(2)->toArray();
=> [
       "id"           => "2",
       "title"        => "2件目の記事",
       "body"         => "ほげほげ",
       "created_at"   => "2015-02-23 07:35:46",
       "updated_at"   => "2015-02-23 07:35:46",
       "published_at" => "2015-02-23 07:35:35"
   ]
>>> App\Article::findOrFail(3)->toArray();
Illuminate\Database\Eloquent\ModelNotFoundException with message 'No query results for model [App\Article].'

検索条件を指定して抽出

>>> App\Article::where('id', '>', 0)->get()->toArray();
=> [
       [
           "id"           => "1",
           "title"        => "はじめてのタイトル",
           "body"         => "かくかくしかじか",
           "created_at"   => "2015-02-22 21:08:16",
           "updated_at"   => "2015-02-22 21:08:16",
           "published_at" => "2015-02-22 20:47:07"
       ],
       [
           "id"           => "2",
           "title"        => "2件目の記事",
           "body"         => "ほげほげ",
           "created_at"   => "2015-02-23 07:35:46",
           "updated_at"   => "2015-02-23 07:35:46",
           "published_at" => "2015-02-23 07:35:35"
       ]
   ]
>>> App\Article::where('id', '>', 1)->get()->toArray();
=> [
       [
           "id"           => "2",
           "title"        => "2件目の記事",
           "body"         => "ほげほげ",
           "created_at"   => "2015-02-23 07:35:46",
           "updated_at"   => "2015-02-23 07:35:46",
           "published_at" => "2015-02-23 07:35:35"
       ]
   ] 

集計

>>> App\Article::count();
=> 2
>>> App\Article::where('id', '>', 1)->count();
=> 1

更新

>>> $article = App\Article::find(2);
=>  {
       id: "2",
       title: "2件目の記事",
       body: "ほげほげ",
       created_at: "2015-06-18 07:54:55",
       updated_at: "2015-06-18 07:54:55",
       published_at: "2015-06-18 07:54:51"
   }
>>> $article->body = 'ふがふが';
=> "ふがふが"
>>> $article->save();
=> true
>>> App\Article::find(2)->toArray();
=> [
       "id"           => "2",
       "title"        => "2件目の記事",
       "body"         => "ふがふが",
       "created_at"   => "2015-02-23 07:35:46",
       "updated_at"   => "2015-02-23 08:04:05",
       "published_at" => "2015-02-23 07:35:35"
   ]

削除

>>> $article = App\Article::find(2);
=>  {
       incrementing: true,
       timestamps: true,
       exists: true,
       snakeAttributes: true,
       manyMethods: [
           "belongsToMany",
           "morphToMany",
           "morphedByMany"
       ]
   }
>>> $article->delete();
>>> App\Article::all()->toArray();
=> [
       [
           "id"           => "1",
           "title"        => "はじめてのタイトル",
           "body"         => "かくかくしかじか",
           "created_at"   => "2015-02-22 21:08:16",
           "updated_at"   => "2015-02-22 21:08:16",
           "published_at" => "2015-02-22 20:47:07"
       ]
   ]

まとめ

以下のことが出来るようになりました。

Eloquent を使って…
– idでレコードを取得
– idでレコードを取得 or 例外を投げる
– 検索条件を指定して抽出
– 集計
– 更新
– 削除

Eloquent には他にも様々な機能や仕組みがあります。一度に全部覚えるのは大変なので、公式サイトに目を通しておき、必要な時に、再度確かめるのが良いかと思います。
http://laravel.com/docs/5.1/eloquent

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中