Laravelとデータベースをリンクさせて、コントローラーで使ってみる。

2020年5月14日

こんにちは、はるまきです。今回は「自作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

このシリーズでは、初学者の僕が学んだことや、ハマったポイントなどを紹介しています。間違っている箇所があればご指摘お願いします。※あくまで僕(はるまき)流の解釈をもとに作成しています。