Laravelとデータベースをリンクさせて、コントローラーで使ってみる。
こんにちは、はるまきです。今回は「自作Webサービス解説シリーズ」です。今回で第3回目!
自作Webサービス:アクアリウム専門の質問サイト→ Q&Aquarium
このシリーズでは、初学者の僕が学んだことや、ハマったポイントなどを紹介しています。間違っている箇所があればご指摘お願いします。※あくまで僕(はるまき)流の解釈をもとに作成しています。
今回は「Laravelとデータベースをリンクさせる」です。
Laravelの.envファイルにデータベースを登録する
ローカルでデータベースを作成している前提で話を進めます。作業は簡単でLaravelの.envファイルに必要事項を記述するだけです。
DB_CONNECTION=mysql//① DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=db_name_hoge//② DB_USERNAME=user_hoge//③ DB_PASSWORD=password//④
①には使用するデータベースの種類を記述しています。今回はmysqlを使用。②はDB名、③はユーザー名、④はそのユーザーでログインする為のパスワードです。正しく記述しないとLaravelとDBサーバー間で正しく通信ができないので注意です。
コマンドでModelを作成する
MVCではデータベースとのやり取りはModelを経由して行います。(らしい)。
php artisan make:model Hogetable
上記ではhogetableとしていますが、ここを自分が追加したいDBのテーブル名と関連付けのある名前の方が、あとあと整理しやすいです。コマンドを実行すると、LaravelのApp直下にに、作成したモデル"Hogetable"ファイルができていると思います。このファイルにDBのテーブルとLaravelをリンクする記述をします。
namespace App\Model;//namespaceを移動 use Illuminate\Database\Eloquent\Model; class Hogetable extends Model { public $table = 'hogetable';//① }
①のところで$table = “hogetable"とすることでリンクできます。これでHogetableというモデルは、"hogetable"(上記の緑色の文字の方です。)というDBのテーブルと繋がりました。あとはこれを煮るなり焼くなり、好きに使えばよし!
なお、コマンドで作成したModelファイルはデフォルトではApp直下に作成させます。開発規模が大きくなり、いくつもモデルファイルを作成しないとなると、管理が大変なので、自分で任意のフォルダを作成して、そこに格納しておくといいと思います。発見しやすいです。上記の例であれば、App直下に"Model"という名前のフォルダを作成して、その中に作成したModelファイルを入れてます。そのために、一行目で「ネームスペース場所が変わりましたよ」と書いています。
実際にModelを使ってみる
それでは実際に上記のモデルをコントローラー内で使ってみたいと思います。使い方はいろいろあるので詳細は各自で検索してみてください。
use App\Model\Hogetable;// クラスを使えるようにする $hogeItems = Hogetable::select('id','name')->get();//①モデルをしよう return view('index.HogePage',compact('hogeItems'));
①でモデルを使用しています。Hogetable::〜〜〜〜でいろんなことができます。またHogetableモデルを使うので、それをuseしてください。他にDBクラスを使ってDBデータを取得する方法などもありますが、それらに関しては他のサイトや書籍を参考にしてください。これとかいい感じでした。
https://qiita.com/nyax/items/333259f680d25453ebf6
最後に
多くのWebアプリケーションはDBを使うと思います。基本的なことなのでしっかりと押さえておきたい!!
自作Webサービス:アクアリウム専門の質問サイト→ Q&Aquarium
このシリーズでは、初学者の僕が学んだことや、ハマったポイントなどを紹介しています。間違っている箇所があればご指摘お願いします。※あくまで僕(はるまき)流の解釈をもとに作成しています。