📖

とりあえずなLaravelの使い方

2021/10/10に公開

目指すところ

  • テーブルを作成する
  • テーブルにデータを入れる
  • テーブルのデータを呼び出してビューで使う
  • ルーティング、コントローラー、モデル、ビューの使い方や関係性をまとめる

Laravelの作成

公式ドキュメント読むのが早い

https://readouble.com/laravel/6.x/ja/

今回は6.xにした。またComposerを使ってインストールした。

テーブルの作成

作成したLaravelのプロジェクトディレクトリにcdした後、

php artisan make:migration create_{migrationファイル名}_table

で、マイグレーションファイルを作成する。作成されたマイグレーションファイルは

  • database/migrations/

下に作成される。(ちなみにデフォルトでいくつかマイグレーションファイルがあった。後で邪魔なので消した)

ファイル構成などを説明し始めると長くなるので、公式ドキュメント読んで。

作成後、

php aritisan migrate

コマンドを実行すると、 database/migrations/ 以下に存在する、マイグレーションファイルが全て実行され、それに応じたテーブルが作成される。

このとき作成されるテーブル名は、

php aritisan make:migration create_hogehoge_table

としたとき、hogehogeというテーブル名となる。ちなみに、create_xxx_tableの_xxx_以外の部分が定数的な働きをして、テーブル作成用のコードをデフォルトで作るので、hogehogeとだけファイル名に記述されると、migrationとしての雛形だけが作成される。(上手く説明できないので実際に試すのが良いと思う)

要は、

php aritisan make:migration create_hogehoge_table
php aritisan migration

でテーブルが作成される。(当然用途に合わせて、database/migrations下にあるファイルの中身を書き直す必要はある。カラム設定については「https://laraweb.net/surrounding/4821/」)

テーブルにデータを入れる前に

ここを理解するには、まずLaravelの処理をざっくり理解したほうが良い。

ルーティング

  • URIに対して、どんな処理を行うか書く。
  • 大体はコントローラーに行くけど、直接ビューに行くこともできる
  • 5.3以降はroutes/web.phpに記述する

https://laraweb.net/knowledge/725/

コントローラー

php aritisan make:controller HogehogeController
  • 上記コマンドで作成(app/Http/Controllers/HogehogeController.php)
  • どのビューを呼び出すのかや、DBに対しての処理、単純にphpで書くような処理などがかける。
  • DBに対しての処理はDBファサードや、Eloquent、クエリービルダーなどを使う
  • ビューに対してDBから抜き出した値を送るような場合は、
$name = '未経験エンジニアの憂鬱'
return view('path/to/page',compact('name'));
  • みたいな感じで送れる。
  • 受け取ったデータは、ビュー内で{{$name}}のようにして使う。

https://laraweb.net/knowledge/3387/

モデル

php artisan make:model User
  • 上記コマンドで、appディレクトリ直下にUser.phpのような形で作成される
  • モデルにはDBに対して、どのカラムに対しての処理を許すのかや、DBに対しての処理なんかがかける(ただDBに対しての処理はコントローラーに書くのが普通っぽい、大規模になったとき用?)
  • MVCで言われるようなモデルではないらしいけど、よくわかんない

結構重要なこととして、User.phpのような形で作成されたモデルは、対象となるテーブルがusersに自動的になる(先頭大文字が小文字になって、複数形となる)。もし、対象とするテーブル名を変えたい場合は

protected $table = 'hogehoge';

のような記述をする。

またfillableかguarded変数を用いて、カラムに対しての書き換え許可を設定しておく必要がある。

書き方とかは下記URL見るのが早い。

https://laraweb.net/knowledge/2324/

ビュー

  • フロント部分
  • resources/views下に書く

テーブルのデータを呼び出してビューで使う

  • コントローラーから対応するモデルを経由して、DB内のテーブルを参照する。
$dbdata = Dbread::where('id', 1)->get();

※id1のレコードを取得して、変数dbdataに入れてる。Dbreadはモデル名、use App\Dbreadとして使用

これを、

return view('read', compact('dbdata'));

としてviewsにわたす。

viewにてread.blade.phpのようなファイルを作る。(雛形はwelcome.blade.php当たり見れば何となく分かると思う)そこに以下のように記述して取り出す。

<div>read.blade.php</div>
@foreach($dbdata as $data)
	<div>{{$data->id}}</div>
	<div>{{$data->name}}</div>
	<div>{{$data->email}}</div>
	<div>{{$data->password}}</div>
	<div>{{$data->created_at}}</div>
	<div>{{$data->updated_at}}</div>
@endforeach

今回はクエリビルダを使っており、クエリビルダの返り値はstdClassのインスタンスとしてなため、一度foreach等で処理したほうが使いやすい。Eloquentなら単数であれば、foreachの処理は必要ない。

そんな感じ!あとは、学習しながらのりで必要なこと押さえればいいと思う。ルーティング→コントローラー→モデル→DB→モデル→コントローラー→ビューの流れを理解して、実際に一度自分の意図通りのコードを書けたなら後は何でもできる気がする。

Discussion