先日Reactの勉強をしなおしていると書きましたが、並行してPHPフレームワークであるLaravelも勉強することにしました。
なぜLaravel/PHPにしたかと言うと、
- LaravelがVue.jsを標準サポートしていると聞いたから
- 現在携わっている案件(自分は全く触ることないけど)でPHPが使われているから
です。
GoとかRubyとかもありますがそこは追々。
どんな教材で勉強してるの?
(はじめに断っておきますが僕は中の人でも関係者でもなんでもないです)
TechPitという『「現役エンジニアが作った」学習コンテンツで「作りながら」プログラミングが学べる学習サービス』(公式原文より抜粋)で勉強しています。
Laravel(+Vue.js)でSNS風Webサービスを作ろう!という教材を購入し、進めています。
Laradockを使っているのでDocker環境があれば環境構築も容易でした。
バックエンドは環境構築が面倒なイメージなのでDockerは本当に革新的技術ですね。(SIer時代を思い出しながら)
1章まで終わった所感
メモベースですが、普段Vue.js中心に書いているのでそことの書き方の差を。
bladeの構文
blade.php内での処理展開はvueのマスタッシュ構文( {{ 処理 }} )とほぼ同義
変数
変数のつなぎ方は->で。
変数の先頭にだけ$がつく。
$article->user->name
jsのようにドットつなぎの方が書くには楽だけど、->の方が視認しやすいのがいいのかな。
article.user.name
ループ
ループは@foreach()
で始まり@endforeach
で閉じる。
配列 as 変数の形。($articles as $article)
Vue(v-for)だと変数 in 配列の形なので、順番を混同しないように注意。
@section, @yield, @include
@section
から@endsection
までで囲んだところをコンポーネントとして扱うイメージ。
@section
で定義した物を別ファイルで@yield('section名')
で読み込む。
@include
を使うことで、別のビューを取り込める。
nav.blade.phpなら、@include(‘nav')
。.blade.phpの前の部分のみでOK。
@yield
は@section
を、@include
は別ファイルを読むって感じか。
postgreSQL
postgreSQL(ポストグレスキューエル)をlaradocでDB作成からテーブル作成まで行いました。
昔はOracleDBを使っていてマイグレーションファイルの記述などしたことがなかったので、これは慣れが要りそう。
マイグレーションファイルの記述
<基本>
テーブルのカラムは$table->カラムの属性('カラム名');
と記述する。
例: $table->bigInteger('user_id');
string型は255文字まで、text型は無制限。
<外部キー設定>
foreign('テーブルのカラム')->refacences('参照先テーブルのカラム')->on('参照先テーブル');
例: $table->foreign('user_id')->references('id')->on('users');
その他カラム設定
->unique()
で重複不可
->nullable()でnull許容
今回のチュートリアルでは、外部サービスからのログインの場合にパスワードカラムをnullにするときがあるのでnull許容としている。
モデル
テーブルのデータをモデルと呼ばれるクラスを通して取り扱う。MVCってやつですね。
モデルの名前は単数形にするのが一般的。
モデル間の関係性によって使うメソッドが違う。
多対1の関係(記事と、記事を書いたユーザー)の場合には、belongsToメソッドを使う。
- 1対1の関係は、hasOneメソッド
- 1対多の関係は、hasManyメソッド
- 多対1の関係は、belongsToメソッド
- 多対多の関係は、belongsToManyメソッド
左方1がhas、多がbelongsTo。
右方1はOne(左方多なら省略)、多はMany。
わかりやすいですね。
まとめと感想
bladeを使っている現場ってどれくらいあるんだろう? バックエンドAPIとしてLaravelを使うならHTMLを構築するbladeはそんなに使われていないのでは?と思いました。
DB構築は最初が肝心なので都度おさらいしていきたいです。