新原雅司、竹澤有貴、川瀬裕久、大村創太郎、松尾大:Laravel リファレンス

作成日 : 2020-09-12
最終更新日 :

概要

副題は「Web 職人好みの新世代 PHP フレームワーク」。対応バージョンは Ver.5.1 LTS である。

記載

2016 年当時の記載であるから、2020 年の現在、読むときは相当な注意が必要である。 2020 年 10 月 22 日、Laravel 8 がリリースされている。本書の Ver 5.1 LTS は2015年9月リリースであったから、 セキュリティフィックスの3年間でさえ過ぎている。

覚書

以下「現在」とは、2020 年 10 月を指している。

日本語化

p.027 で、日本語化には comja5 という、コメントを日本語に翻訳するパッケージのインストールが進められている。 しかし、現在では翻訳機能の更新は停止している。

ディレクトリ構造

p.028 のディレクトリ構造は、現在の PHP とは異なっている。現在の Laravel のバージョンは、
$ laravel new dirname
で作ったディレクトリに行って、 $ php artisan --version
を打つ。この結果は
Laravel Framework 8.11.2
このときのディレクトリ構造はこうなっている。

	.editorconfig
	.env
	.env.example
	.gitattributes
	.gitignore
	.styleci.yml
	README.md
	app/
	artisan
	bootstrap/
	composer.json
	composer.lock
	config/
	database/
	package.json
	phpunit.xml
	public/
	resources/
	routes/
	server.php
	storage/
	tests/
	vendor/
	webpack.mix.js

エラー画面

エラー画面を見やすくするためのパッケージ Whoops が p.031 で紹介されている。 これは現在(2020-10-25)でも利用できるようだ。

php のポート番号指定

$ php artisan serve --port=xxxx
でポート番号が指定できることが p.033 に記載されている。私は現在、いろいろなアプリケーションを localhost で起動させているので、ポート番号がかぶらないようにするのが大変だ。これは覚えておこう。

テンプレートエンジン

Laravel に標準搭載されているテンプレートエンジンは Blade である。これは使えるが、 他にも Smarty、Twig などがある。

OR マッピング

OR マッピング (ORM) とは、データベースとアプリケーションの間に「オブジェクト」という物を介して融通させる技術だと理解している。 Laravel の OR マッピングは Eloquent を使っていると p.046 では書かれている。これが現在でも使えるかどうか確かめたら、 使えるようだ。もっといえば、Laravel とは独立に ORM に Eloquent が使える。

Many to Many

p.144 で、N:N の relation を説明している。たとえば、authors というテーブルに、 次の属性があるとする。

一方で、atuhor_type というテーブルには次の属性があるとする。

さて、本書にはどういうことが書いてあるか。

例えば、「性別」「世代」「存命中かどうか」など、著者のタイプ(author_type テーブル)を 著者(authors テーブル)に対して、いくつでも自由に設定できるケースを想定してください。 このリレーションを Many to Many リレーションと呼びます。

ここで必要となる中間テーブルには、 author_author_type となっている。最初のアンダースコアは、 中間テーブルを作る場合の第1のテーブル名と第2のテーブル名をつなぐ字で、次のアンダースコアは、 もとのテーブルの名前にある。この author_author_type の属性は次のようになるだろう。

私がちょっと驚いたのは、次の例だった。リスト 3.133 : 多対多のリレーション取得の例である。

Author::find(1)->types()->lists('name'); // [0 => "男", 1 => "存命中"]

このコメントに入っている、0 や 1 は、おそらく配列のインデックスなのだろう。最初は、 author_types の id かと勘違いしていた。データベースの id ではまず、0 はないからだ。 そして、author の id = 1 にある作家は、男であり、存命中であるという情報がみつかったわけだ。

普通データベース設計なら、「性別」という属性を設け、1、2、3、などで区別する(たとえば1 = 男、 2 = 女、3 = 不詳、など)ここではどんな属性でもいいということを表しているから、 頭を切り替えないといけない。

書誌情報

書 名 Laravel リファレンス
著 者 新原 雅司、竹澤 有貴、川瀬 裕久、大村 創太郎、松尾 大
発行日 2016 年 1 月 11 日 初版第1刷
発行所 インプレス
定 価 4200円(税別)
サイズ
ISBN 978-4-8443-3945-8
備 考 越谷市立図書館で借りて読む

まりんきょ学問所コンピュータの部屋コンピュータの本Laravel > 新原 雅司、竹澤 有貴、川瀬 裕久、大村 創太郎、松尾 大:Laravel リファレンス


MARUYAMA Satosi