LINE2019.10.03この記事は約5分で読めます。スポンサーリンクスポンサーリンクlaravelにはEloquentという強力なORMがあります。データベースのテーブルをモデルと対応させ、モデルのインスタンスでレコードを表現するものです。この記事では、モデルのfindメソッドによるデータベースのデータレコード取得の方法について説明します。findメソッドの使い方モデルクラス::find(主キー)最初は単一のモデルを取得する方法です。findメソッドにデータベースのテーブルの主キーを指定します。Projectモデルがあったとすると、以下のように対応するprojectsテーブルでidに主キーマークが付いていますね。Eloquentでは、常にidが主キーと想定しているようですので、変更する場合は、primaryKeyプロパティを定義してください。(参考:https://readouble.com/laravel/5.8/ja/eloquent.html)簡易チェックとして、tinkerで取得のテストをしてみます。Projectデータが$prjに取得されているのがわかります。モデルクラス::find(主キーの配列)複数のレコードを取得することも出来ます。その場合、戻り値はコレクションになります。して3つのレコードを取得してみましょう。3の3つのレコードが取得されてます。見てみると、ちゃんと代入されていることがわかります。モデルクラス::find(配列)の戻り値はEloquentのコレクションコレクションは配列に比べてかなり便利なメソッドがついてます。Laravelのコレクションには、ベースコレクションと、ベースコレクションを拡張したEloquentコレクションがあり、findメソッドの戻り値は、Eloquentコレクションになります。ベースコレクション配列と違って、色々な操作をすることが出来ます。フィルタリングかけたり出来ましたが、ベースコレクションでもwhereメソッドがあり、コレクションデータに対して、フィルタをかけることが出来ます。他にもかなりの操作ができます。詳しくは下のマニュアルを御覧ください。Laravelreadouble.comEloquentコレクションそして、Eloquentコレクションは、ベースコレクションを継承して、さらに、データベース用に拡張されています。findメソッドはベースコレクションになく、Eloquentコレクションにだけ存在します。使い方はクエリビルダーのfindと同じです。コレクションは、主キーをもとに動作するというものもあります。uniqueとかのメソッドが該当します。ベースコレクションでは、コレクションの要素自体の重複を削除するのですが、Eloquentコレクションでは、主キーの重複を削除します。Eloquentコレクションについてもマニュアルがありますので、詳しくは見てみてください。Laravelreadouble.comクエリビルダのfindとEloquentコレクションのfindの使い分け例クエリビルダで取得するデータを絞っておけば、Eloquentコレクションのfindを使う必要はありません。クエリビルダでは一気に複数のデータレコードを取得しておき、Eloquentコレクションにたいしてデータ取得することにより、クエリ発行数を減らし高速化を図ることが出来ます。$prjs->find(2);・・・・などと、Eloquentコレクションのfindメソッドを使って参照すれば、SQLクエリを1回発行するだけで処理でき、高速化が見込めます。下図は、先程の例で、Eloquentコレクションのfindメソッドを使って見た例です。クエリの回数は、大規模にデータを呼び出し、何度も並べ替えたり、条件ごとに何度も検索したりするウェブページを作るときは特に速度に違いがでます。毎回クエリビルダでSQLアクセスするのか、一旦Eloquentコレクションとして一気に読み出して、そのあと、Eloquentコレクションのメソッドを使って、データを利用していくのかを検討する価値はあります。高速化のためには、何度もSQLクエリを発行するのはなるべく避けたいところですし、だからといって最初に変数へ読み出すとメモリを多く消費してしまうので、速度とメモリサイズでトレードオフが必要でしょう。findには、単一のデータレコードを取得する方法と、配列を引数に渡して複数のデータレコードを取得する方法があります。コレクションとしてデータを取得します。Eloquentコレクションには、findメソッドを始めとして、クエリビルダに匹敵するほどのメソッドがあります。ウェブアプリのパフォーマンスを上げるため、Eloquentコレクションもうまく使っていけるようになりましょう。メルマガでも、ウェブプログラミングに関する情報を発信しています。よかったら下のフォームから登録してみて下さい。LINEわかばやしをフォローするわかばやしIT業務で使えるプログラミングテクニック関連記事ウェブページ作成PHPでログをファイルに書き出すのはerror_log()が便利だいたいのレンタルサーバではPHPが使えます。ワードプレスもPHPで作られていますね。htmlに埋め込んでつかうこともできてPHPは便利ですよ。htmlの中にPHPで書かれたプログラムを埋め込むことによって、お客様が訪れるたびに違う...PHP読めないメールSubjectはMIMEヘッダフィールドエンコードされてるかも。人間が読めないような場合があります。これはMIMEヘッダフィールド用にエンコードされているからです。この記事では、PHPでMIMEヘッダフィールドをデコードする方法と、公開している...PHPcomposerのrequire/update/installの違い。コマンドrequire/update/installの使い分けについて整理しておきます。comp...laravellaravelで環境設定ファイル.envの使い方こんにちは。laravelでは、環境ごとに違う値をセットする必要がある設定項目は、ルートディレクトリにある.envファイルに行います。この記事では、.envの特徴と使い方を紹介します。2進数から10進数への変換ツールの制作こんにちは。ウェブサイト開発入門も残り2回となりました。今回は、実習として、実際にツールを作成して、動かしてみましょう。題材としては、ウェブページで、2進数を入力すると、10進数の数字に変換するウェブツールを作ります。プログラミングで大事な2進数・16進数こんにちは。ウェブプログラミング入門です。プログラミングの第一歩として簡単なプログラムを作り、Windowsパソコン上にサーバー環境を構築して、ブラウザで表示できるようになる方法を説明していきます。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。ホームプログラミングlaravelプログラミングが分かるメルマガ講座プログラマに必要なスキルが身につく情報をメルマガで配信しています。登録してみてください。*マークの項目は入力必須です。「あなた専用カリキュラムと3ヶ月のサポート」で、もっと稼げるプログラマになれる講座、開催中。「プログラマとして独立したい」、「転職してプログラマとしてもっと給料をアップさせたい」と考えているのであれば、以下より詳細を御覧ください。『稼げるプログラマ育成講座』プロフィール自営のソフト開発者。小学3年のときにMSXでプログラミングを始めて、いつの間にか数十年たちました。大学ではc++を使いスパコンの研究、就職してからはcで自動車のエンジンやモータなどのパワープラント制御をやってました。今は、企業の業務改善ツールやウェブサイト・ウェブアプリを受託開発しています。・・・このブログでは、パソコン関係の仕事をしていくのに必要な情報をお伝えしています。IT業務で使えるプログラミングテクニック.。