プログラミング学習中

【41歳学習中_SAMURAI TERAKOYA】Laravelの基礎を学ぼう#10-12日目

前回はDBへの接続であったり、マイグレーションを使用したテーブルの作成、カラムの追加を学習した。

今回も引き続きデータベースに関して学んでいく。

記憶すること!

忘れてはいけないMVCで使用するフォルダとファイル
■ルート
routes\web.php

■コントローラー
app\Http\Controllers\○○○.php

■ビュー
resources\views\○○○.blade.php

■モデル
app\Models\○○○.php

■マイグレーション
database\migrations\〇〇〇〇〇〇〇_〇〇_create_products_table.php

15章 クエリビルダの使い方を学ぼう

ワード

クエリビルダ

Laravelの機能でSQLのクエリ(テータベースに対する問い合わせ、命令文)を簡単に作成・実行できる

SQL文だと
SELECT * FROM products; 
 ~~~~~ ★クエリビルダだと DB::table('player')->get(); 

クエリビルダを使うとSQLを記述しなくて良いのだな
複雑なSQLどうするんだろう…

ファサード

インスタンス化しなくてもメソッドを使えるようにしてくれる機能のこと

★通常のクラス
 SampleClass()にあるメソッドsampleMethod()を使うには通常はインスタンス化する
$sample_instance = new SampleClass();
$sample_instance->sampleMethod();
  ~~~~~
★クエリビルダだと
 なんとこれだけ。メソッドをそのまま使える
SampleFacade::sampleMethod();

クエリビルダの書き方

以下のuse宣言とテーブル指定を忘れないこと。

選択、作成、更新、削除の各構文はテキストを参照すること。

手順1:use Illuminate\Support\Facades\DB; を記述してDBファサードのuse宣言を行う
手順2:DB::table('テーブル名') を記述してデータベース操作を行うテーブルを指定する

参考サイト

課題 クエリビルダを使ってデータを取得しよう

テーブルを作成

マイグレーションファイルからマイグレーションを実行。

ム、エラーが…

マイグレーションファイルの宣言に問題があると想定し、

上のエラーメッセージに着目した。

上記のようになっているのを以下のように修正

無事にマイグレーションが実行され、テーブルが作成されました。

stringは何も指定してないとvarchar(255)のデータ型になるんだな

コントローラを作成し、ファサードを追加

提出

15章を流用しながら、課題を提出。

テーブルの作成時にデータ型の宣言でエラーが出た他は問題なし。

16章 モデルの基本を学ぼう

  • モデルでデータの作成、選択、更新、削除の処理を作成していく
  • モデルはターミナルで「php artisan make:model モデル名」を実行する
  • モデル名は、テーブル名を単数形にする(例:playersテーブル⇔Playerモデル)
    この命名規則が大事!

ワード

HasFactory

HasFactoryとはテスト用のデータ(ダミーデータ)を大量に作成するためのメソッドを提供するトレイトです。

17章 Eloquent ORMについて学ぼう

エロ…だけどエロじゃない…

「クエリビルダ」も「Eloquent ORM」もデータベース操作のための機能のようだが、何が違うんだ!

  • クエリビルダ:モデルを介さず、直接データベースとやりとりを行う
  • Eloquent ORM:モデルを介し、間接的にデータベースとやりとりを行う
SAMURAI TERAKOYA

Eloquent ORMにおけるクエリの書き方

以下のuse宣言とテーブル指定を忘れないこと。

選択、作成、更新、削除の各構文はテキストを参照すること。

手順1:use App\Models\モデル名;を記述してモデルのuse宣言を行う
手順2:モデル名::メソッド名またはインスタンス名->メソッド名のように、モデルまたはインスタンスに対してメソッドを使う
    (メソッドによってモデルとインスタンスのどちらに使うかは決まっている)

クエリビルダはファサード(Facades)をuse宣言したがけど、
Eloquent ORMはモデルをuse宣言すること!

Eloquent ORMはクエリビルダのすべてのメソッドをほぼ使用可能らしい!
エロの力だとするとすごい…

使い分けについては参考サイトを確認する。

参考サイトがqiita!

create()メソッド

create()メソッドは、連想配列として指定したカラムとその値にもとづいて、モデルにマッピングされているテーブルに新しくデータを追加させる。

そのモデルに$fillableプロパティまたは$guardedプロパティを設定する必要がを設定する必要がある。

$fillableプロパティ、$guardedプロパティを設定する
全然分からないけどとりあえず気にしておこう

Eloquent ORMのクエリを使ってみよう

ム、エラーが…

モデルにプロダクトがないだと…

そもそもテキスト(教材)にモデルを作成するとないのだが…

16章で記載のあったモデルの作成を漏らしてました…

★モデルを作成する為のコマンド
 php artisan make:model モデル名

  ~~~~~
★今回はproductsテーブルに紐づくモデルなので、モデル名をProductにしてモデルを作成する
 モデル名をつけるときは、テーブル名を単数形にすると対応するテーブルと自動で紐づいてくれる。ことを忘れずに
 php artisan make:model Product

モデルをartisanコマンドで作成したところ、無事表示されました。

感想

データベースの操作には「クエリビルダ」と「Eloquent ORM」の2つの方法があるのが分かった。

使い分けのメリットは分かってないが、「クエリビルダ」はシンプルなデータベース操作、「Eloquent ORM」はモデルが必要で複雑なデータベース操作ができると理解。

本当にその理解であってるのか?

今週末は栃木県にある「ぽんぽこの森ファミリーキャンプ場」に行ってきます!では!

  • この記事は東京在住の若干雨キャンパーが書きました

ame-sun

1982年生まれ東京都板橋区在住。

キャンプの日は雨が多い気がする。
あ、長男が2014年の大雪の日に生まれてからかも…
お宮参り、お食い初め、GWの旅行、ディズニーランドも…
キャンプ場に到着すると雨が降ってくる…

でも、運命だ。私は若干雨キャンパーでいく!

2021年からブログを始め、細く長く楽しみながら書いていきます。
どうぞ宜しくお願い致します( ̄へ ̄;)ゞ

■こんなブログです
キャンプ場+@(景色、温泉、川遊びなど)の紹介
キャンプ場リスト
高速IC(インターチェンジ)の周辺情報
 (同じIC周辺を都度調べてたので記事にしてみました♪)
キャンプ道具の紹介
子供と行ける遊び場の紹介 など

■キャンプ回数
 2022年 11回

※Amazonのアソシエイトとして、当メディアは適格販売により収入を得ています。

-プログラミング学習中
-, , ,