Laravelを勉強し始めてどれくらい立つかわからないんですけど、基本的な使い方はぼちぼち把握したかなって思います。

それでもサービスとか色々とわかっていないところが多々あるので、一回まとめながらまとめを作りたいなって思って記事にしました。

 

Controller

URL:XXXX.exsample/

このようなURLにアクセスした時に、最初にルーティングをみに言って

routes/wpb.phpを見に行って、Route::get(‘/’, ‘Controller@index’)->name(‘アクション名’);が存在するか確認する。

Route定義があれば、指定されたControllerに読み込みにいく

読み込みにいった時、Controllerファイルに記述されているアクションの処理をする。

public function index()
{
return view('home');
}

こんな感じのアクションが記述されていたとして、これは呼び出されたらview()メソッドで定義されたviewファイルを読みに行く。

やってることはこれだけ、実際このページを表示する時にデータベースから値を呼び出して、viewファイルに渡す処理を書くとしたら、returnの前に書けばいい。

Qitaに下記のような記事がある。

[laravel] controllerからviewへの変数の受け渡しとその展開方法

Viewファイルに値を受け渡すやり方が書いてある。

そこまで、難しく考えなくて良くてControllerは値をModelから呼び出して、Viewに渡したり、Viewからもらった値をModelに渡す処理を書くところ、だからControllerの設計をするとすれば、書き込むとか作成という言い方をすると、レビューで却下されてしまいます。

会社によって言い方は違いますけど、値を渡すとか受け取る処理、呼び出すとかいう書き方をするとレビューが通りやすいです。

これは経験して思った事なので、あながちハズレじゃないって思い込んでるけど、それはどうなの?って思ったらご指摘いただけると助かります。

MVCを初めて勉強される方は、書き込む処理と対して変わらないって思いますよね。

公式:「コントローラ 5.5 Laravel

Model

Modelを作成するときにテーブルの定義もする必要があります。

Modelをartisanコマンドで作成する時に下記のように一緒にマイグレーションファイルを作成する癖をつけると、手間が省けるかもしれないですね。

php artisan make:model User --migration

Eloquentモデル規約というものがあります。

[メモ]Eloquentの利用方法(1)

ここのサイトに記載がありました。

Laravelのドキュメントを元に作成されている記事らしいので信憑性はありそうだなって思います。

Eloquentモデル規約

Laravelで定められたモデルとテーブル名の対応関係例:
Flight(モデル)—–Flights(テーブル)

これを知ってれば、Modelとテーブル名が同じである必要がある理由は分かりますよね。

調べたら「エロクェント」が読み方として一番人気らしいです。

CURDが最初からLaravelで用意されているのは、嬉しいですよね。

View

Bladeテンプレートをアクション名で作成するだけでLaravelが認識してくれます。

基本的に<html>から初めてもいいんだけど、PHPなんだし共通化してるところは読み込みで作ってもいいんじゃないかな?って個人的には思っている。

<title>アプリ名 – @yield(‘title’)</title>

こういう書き方をするらしいけど、ここ変数か何かで良くないか?って思うよね。

convention over configuration(設定よりも規約)の考え方だから、おそらくは従ったほうがいいんだろうけど、PHPの良さが少し薄れてしまうんじゃないかって気がしてる。

毎回DBの接続処理を呼び出すような記述をしなくてもいいって考えれば、そこまで苦痛にもならないのかな?

とりあえず、これには気をつけて従うようにしないとなぁ。

Service

サービスコンテナ 5.5 Laravel

ここにサービスの作り方が書いてある。

見た感じここに作らないといけないみたいな記述は見つけられなかったけど、当たり前のように/app/の中に作らないといけないんだろうなぁ。

サービスは提供をするという意味なので、そのままですが外部クラスからサービスを経由して値を受け取る時に作ります。

例えば、今作ってる車に関連する内容で説明すると車を新規登録する時に、車のクラスがあったとして新規登録する時に登録されているクラスを呼び出さなければならないです。

つまり、車両クラスマスタから、登録されているデータを提供してもらう必要があります。

そのため、車両登録マスタが車両クラスマスタを呼び出す時に、車両クラスマスタサービスを使って呼び出すということになります。

Migration

migrationを作成する

php artisan make:migration create_users_table

migrationを作成したテーブルに追加する

php artisan make:migration add_votes_to_users_table --table=users

migrationを実行する

php artisan migrate

migrationを戻す

php artisan migrate:rollback

migrationを戻す個数を指定する

php artisan migrate:rollback --step=5/code>

データベースをリフレッシュし、全データベースシードを実行

php artisan migrate:refresh --seed

Seeder

Seeder作成

php artisan make:seeder UsersTableSeeder

Seeder中身

DB::table('users')->insert([
           'name' => str_random(10),
           'email' => str_random(10).
           '@gmail.com', 'password' => bcrypt('secret'),
   ]);

Seeder実行

composer dump-autoload
php artisan db:seed

開発中なら下記のコマンドで一気にリセットができる

php artisan migrate:refresh --seed

これが理解できればLaravelの使い方も少しは大丈夫ですね。