Laravel – ルーティングが効かない

現象

routes/web.phpにルーティングを追加したが、そのルーティングが機能せずブラウザの表示が真っ白になってしまった。

原因

以下のような順番でルーティングを書いたため。

理由

URLに.../products/select_typeが与えられると、まずリソースルーティングのところで.../products/{id}として解釈されてしまい、以降のルーティングに到達しないため。

解決

ルーティングの順番を再考する。基本的に個別ルーティングはリソースルーティングより前に置く。

 

 

Laravel – クエリービルダーでのエイリアス

概要

SQLではフィールド名やテーブル名のエイリアスを定義できるが、同じことがクエリービルダーでもできる。

  • フィールド名のエイリアスは、select()メソッドのフィールド名の引数にそのままASを書く
  • JOINされるテーブルのエイリアスはjoin()メソッドのテーブル名の引数にそのままASを書く
  • 親テーブルのエイリアスはfrom()メソッドの引数で指定する

SQLの記述

元のSQLとして以下を使う。

このSQLでフィールド名とテーブル名のエイリアスを以下のように定義する。これと同じことをクエリービルダーで書いていく。

クエリービルダーの記述

オリジナル

元のSQLに対応するクエリービルダーは以下のとおり。

フィールド名のエイリアス

フィールド名のエイリアスは、select()メソッドのフィールド名の引数にas aliasで定義。

JOINされるテーブルのエイリアス

親テーブルに結合される子テーブルのエイリアスは、join()メソッドのテーブルを指定する引数(第1引数)でas aliasを指定する。

親テーブルのエイリアス

親テーブルのエイリアスは、最初にfrom()メソッドを呼んでその引数で指定する。select()メソッドはメソッドチェーンで繋げる。

 

MySQL – データベースの複製

mysqldumpによる方法

元のデータベースのダンプファイルを作成。

MySQLで新データベースを作成。またはOSのコマンドラインからmysqladminで新データベースを作成。

ダンプファイルの内容を新データベースに再現