DIVEJavaScriptの設定を有効にしてご利用ください。無効の場合、当サイトを正常にご利用できません。mio.satohLaravel初心者講座のシリーズもいよいよ最終回、モデル編です。しているうちにあっという間にLaravel5がリリースされてしまい、こちらの連載をどうしようか悩んだのですが、まずはLaravel4での解説をちゃんと完結させることにします。私自身まだLaravel5を試せていないから仕方ない。(5)モデルとEloquentORM編」←いまここ"モデル"なるものMVCにおけるModelMVCの概念についてはルーティング編でざっくり説明していますが、モデルは「データを管理する」役割の部分です。モデルを簡単に扱えることこそ、PHPのフレームワークを使う一番のメリットといえるかもしれません。DBと面倒なデータのやりとりをこなさなければいけない場面で、毎回SQL文を(しかもセキュリティ面を常に担保しつつ)書く労力を想像してみましょう(私は嫌です)。その面倒な部分を丸投げ出来るのがフレームワークのORMです(ありがとうORM)。ORM突然出てきたORMとは何者か。オブジェクト指向型のフレームワークのモデルは大抵"ORM"という機能を持っています。mapping"の略で、DBのデータをオブジェクトとして扱ってしまおうという代物です。DBが持っているID=1のユーザの名前データを引き出したい時、SQL文でまずそのユーザのデータを選択し、そこからユーザ名を抽出する、という流れになります。別のユーザの情報も欲しい、となったらまたSELECTでユーザを検索することになります。PHP構文とSQL構文をハイブリッドしたときの読みづらさ、書きづらさも相まって、この手の操作はなかなか憂鬱な気分にさせてくれます。そこでORMを使うとどうなるか。「さっきのテーブルのオブジェクトから今度はid=2を検索して-。そのnameを取り出してー」このグダっとした日本語と同じような簡単な文一発でデータの抽出ができます。抽象的な説明はこのくらいにして、具体的な使い方を説明しましょう。LaravelのORMには"EloquentORM"という名前が付いています。ここでは例としてユーザデータを管理するDBのテーブルを作成し、そこにユーザ情報を登録したり引き出したりという作業を想定します。マイグレーションまずユーザ管理用のテーブルを作成しなきゃいけないわけですが、ただ空っぽのテーブルから自分でスキーマを作成するよりイケてる方法がLaravelにはあります。テーブルのひな形を作成してくれるマイグレーション機能です。コマンドラインで以下のように叩きます。create_users_tableこれでapp/database/migrationsにテーブルを作成するためのプログラムが生成されました。出来たファイルを開いて、up()の中に作成したいテーブルのスキーマを書いていきます。down(){Schema::drop('users');}上の記述を読むだけでなんとなく分かっていただけると思うのですが、$table->型('カラム名')の形式です。unique()を足したらユニーク属性になるわけですね。ここまで出来たら、最後にコマンドでマイグレーションを実行します。migrateこれでusersテーブルがDBに作成されました。Eloquentモデルを定義するLaravel4ではapp/model以下にモデルクラスを定義します(Laravel5ではmodelディレクトリが廃止されたらしいので注意)。app/model/User.phpというファイルを設置します。決まりごととして、ファイル名とその中身のクラス名をUserと決めたのであれば、使用するテーブル名は自動的にその複数形のusersである必要があります。※それ以外の名前にしたい場合は、テーブル名を特別に指定することもできます。User.phpに以下のように書いてみましょう。{}なんとびっくりこれだけでUserモデルが完成しました。あとは煮るなり焼くなり好きにして下さい。データを入れたり出したりする折角モデルを作ったので、ちゃんとデータの扱いまで触れておくことにします。データを登録するまずユーザデータを一件追加してみましょう。とあるコントローラで以下のように書いて実行させます。Userとしたところで、先ほど作ったモデルを元にユーザのオブジェクトが生成されます。各カラムのデータを入力して、最後にfirstOrCreate(Userオブジェクト->getAttributes())とすれば、それだけでデータ登録が完了です。ちなみに"firstOrCreate()"というのは、既にそのデータが存在するかどうかをチェックしてから登録するメソッドなので、そのチェックが必要なければ"create()"でもOKです。データを取得する今度は登録したデータを引き出してみます。今回作ったusersテーブルではidとemailがユニークデータなので、emailからnameを引いてくることにしましょう。とあるコントローラで以下のように書きます。$user->name;はい、これだけで取得できました。単純なデータ検索ではwhere()を使うことが多いと思いますが、idで一発取得するfind()や、データを更新するsave()、削除するdelete()などが基本となります。他にもEloquent独自の様々な検索や操作のメソッドが用意されているので、詳しくは公式リファレンスを参照していただきたく。ORMこそがPHPフレームワークの真骨頂だ!EloquentORMの威力がお分かりいただけたでしょうか。ここではとても紹介しきれないほど、LaravelのEloquentORMは多彩な機能を持っていて、一度使えば素のSQL関数には戻れなくなること請け合いです。Laravel5になると4で貧弱だった部分がさらに強化されているようなので、次の連載でお会いするときは生まれ変わったLaravelをまた紹介できたらいいですね。管理者/ユーザーのログインを別々に実装する(MultiAuth)2019.02.07脱jQuery!?、Swiper使ってみた。存在しない数?2018.09.14Composerを使ってWordPress導入作業を一瞬で終わらせる2018.09.09脱jQuery!?、anime.js使ってみた。2018.04.20脱jQuery!?、Barba.js使ってみた。最新のビルドツール「Parcel」で開発環境をサクッと立ち上げる。Typeではじめる構造化データモンスターダイブの2019年を振り返る。創業10周年を振り返る。Hot?中華製タフネススマホを買ってみた。