Laravelをはじめて触った人向けに、Laravelで最初に知っておくべきこと、覚えておくべきことをまとめました。
記事を一通り読んで、実際に表示してある通りにソースを書くとLaravelの基礎を理解できます。
ぜひ、最初にLaravelに触れる際の参考にしてみてください。
Laravelインストールとプロジェクトを作成する手順
まずなによりもLaravelのインストールを行わないと、Laravelに触れることもできません。
そのLaravelのインストールを行う前に、「Composer」のインストールからはじまります。
「Composer」はコマンドを利用します。
例えばLaravelのインストールは以下のコマンドです。
composer global require laravel/installer
またLaravelのプロジェクトを作成するコマンドは以下の通りです。
laravel new [プロジェクト名]
最初のうちは、「変なコマンドを実行してしまってPCが変にならないだろうか…」と心配になるものです。
実際に、最初のうちは私も不安になりながら実行していました。
そんな不安に陥らないように、一つ一つコマンドを記述しながら解説した記事があるので参考にしてみてください。
コントローラとビューの基本を理解する
「MVC」の「V」と「C」であるビューとコントローラの基本的な使い方を理解するところから、Laravelははじまります。
「V」とはビューのことで、HTMLなどを書いてブラウザで表示するファイル。
「C」とはコントローラのことで、ビューやモデルなどのつなぎ部分であり、PHPの処理を行う部分です。
さらに、忘れてはいけないのがルーティングの設定ファイル(web.php)です。
URLごとに、参照先のコントローラや関数を指定します。
たとえば、「lalarave-test」というLaravelのプロジェクトを作成したとします。
「http://localhost/lalarave-test/public/hello」というURLにアクセスされた時のルーティングの設定ファイルの書き方は以下のとおりです。
Route::get('/hello', 'App\Http\Controllers\HelloController@index');
get()内の第一引数がURLの「/hello」に該当します。
第二引数が参照先の「コントローラのファイル名@関数」になります。
第二引数は処理を書くことも可能ですが、コントローラを指定することがほとんどです。
この場合、コントロールファイル「HelloController.php」を作成します。
コントローラファイルはコマンドで作成できます。
php artisan make:controller [コントローラ名]
生成したコントローラファイルで、主にプログラムの処理を記述します。
今回は関数「index」を追記して、ビューファイルを表示するように記述します。
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HelloController extends Controller
{
public function index()
{
return view('hello');
}
}
最後にビューファイルを用意します。
ビューファイルは特にコマンドで作成できないので、ファイルを作りましょう。
コントローラファイルで「return view(‘hello‘);」と記述しましたね。
この場合のビューファイルの名前は「hello.blade.php」です。
「○○○.blade.php」と覚えましょう!
ビューファイルは表示したいhtmlタグで書けばブラウザに表示してくれます。
どことどこの名前を一致させなければいけないのか。
まずはコントローラファイルとビューファイル、ルーティングの設定ファイルの3つの関係・記述方法を覚えましょう。
さらに詳しくは以下の記事を参考にしてみてください。
コントローラからビューへデータを渡す方法
PHPの処理を行うコントローラから、さまざまな値をビューへ渡すことはよくあります。
たとえば取得したDBのデータ、ブラウザのフォームにユーザーが入力した値などです。
ビューへデータを渡す方法は3つあります。
- view関数の第二引数
- compact関数
- withメソッド
view関数の第二引数
データが一つの場合。
$message = "Laravelの勉強中!!";
return view('hello', ['message' => $message]);
データが複数の場合。
$message = "Laravelの勉強中でーす!!";
$message2 = "がんばります!!";
return view('hello', ['message' => $message , 'message2' => $message2]);
compact関数
データが一つの場合。
$message = "Laravelの勉強中です!!";
return view('hello', compact('message'));
データが複数の場合。
$message = "Laravelの勉強中でーす!!";
$message2 = "がんばります!!";
return view('hello', compact('message','message2'));
withメソッド
データが一つの場合。
$message = "Laravelの勉強中でーす!!";
return view('hello') -> with('message', $message);
データが複数の場合。
$message = "Laravelの勉強中でーす!!";
$message2 = "がんばります!!";
return view('hello')
-> with('message', $message)
-> with('message2', $message2);
送るデータが複数あると「compact関数」のスッキリ感がわかると思います。個人的にはcompact関数がおすすめです。
受け取ったビューがデータを表示する方法は以下の通りです。
{{ $message }}
さらに詳しくは以下の記事を参考にしてみてください。
データベースの接続やテーブルを作成する方法
データベースの接続は、Laravelプロジェクト直下に保存されているenvファイルを編集します。
データベース名やユーザー名、パスワードなど指定のものに編集しましょう。
またLaravelにはテーブルの作成やカラム追加など、データベースの変更を管理する「マイグレーション機能」があります。
マイグレーションファイルを作るコマンドは以下のとおりです。
php artisan make:migration create_[テーブル名]_table
コマンドを実行すると「database\migrations」直下に、「[年][月][日][時分秒]_create[テーブル名]_table.php」が保存されます。
ファイルを開いて、マイグレーション実行時に呼び出されるup()に生成したいテーブルの構成を記述します。
public function up()
{
Schema::create('managers', function (Blueprint $table) {
$table->increments('id')->comment('主キー');
$table->string("login_id", 50)->unique()->comment('ログインID');
$table->string("password")->comment('パスワード');
$table->timestamps();
});
}
「 $table->」の後ろは、カラムの定義です。
よく使うカラムだけ紹介しますが、以下のように書きます。
$table->increments('id') // PRIMARY
$table->integer('id'); // INTEGER
$table->unsignedInteger('name'); // INT
$table->string('name', 100); // VARCHAR
$table->char('name', 100); // CHAR
$table->text('name'); // TEXT
作成したマイグレーションファイルは、マイグレーション実行コマンドを利用するとテーブルの生成が行われます。
php artisan migrate
さらに詳しくは以下の記事を参考にしてみてください。
モデルファイルの作成方法
モデルは、データベースのデータ取得や登録、更新などのやりとりをするために作成します。
Laravelで重要なのは「モデルのファイル名」です。
「テーブル名」が複数形に対し、「モデルのファイル名」は単数形で書くように決まっています。
例えば、「テーブル名」がusers(複数形)の場合、
「モデルのファイル名」はUser(単数形)になります。
モデルファイルを作成するコマンドは以下の通りです。
php artisan make:model [モデル名]
生成したモデルファイルをよく編集するのは、データの登録を許可するカラムを指定してあげることです。
モデルを生成するとすでに記載されている「fillable」は、データの登録を許可するカラムを指定します。
たとえば「login_id」と「password」というカラムにデータの登録を行いたい場合、以下のように記述します。
protected $fillable = [
'login_id',
'password',
];
連番が登録される「id」や、登録・更新日時が自動で入る「created_at」「updated_at」などは不要です。
さらに詳しくは以下の記事を参考にしてみてください。
データの登録・更新・取得・削除
コントローラでデータベースのテーブルを登録や更新などを行いたい場合、まずはモデルファイルを参照させます。
一番上に、以下のように参照したいモデルファイル名をuseで指定してあげましょう。
use App\Models\[モデルファイル名];
たとえば、モデルファイル名「Manager」の場合、以下のようになります。
use App\Models\Manager;
テーブルにデータを登録したり、更新したりする場合、従来ならSQLを記述しなければいけませんでした。
しかし、Laravelなら以下の記述だけでOKです。
データの登録の場合(データを登録したいテーブル名Managersの場合)は、以下の通りです。
Manager::create([
"login_id" => $login_id,
"password" => $password,
]);
取得は以下の通りです。
Manager::get(); // 全件取得
Manager::where('id', '=', $id)->get(); // 条件を指定して取得
Manager::where('id', '=', $id)->first(); // 最初の1件のみ取得
削除は以下の通りです。whereで削除したいデータを指定します。
Manager::where('id', '=', $id)->delete();
更新は以下のとおりです。whereで更新したいデータを指定します。
Manager::where('id', '=', $id)->update([
"login_id" => $login_id,
"password" => $password,
]);
ビューも込みで、登録や編集、削除の方法を知りたい場合は以下の記事を参考にしてみてください。
バリデーション(エラーチェック)の実装方法
入力フォームで入力した内容にエラーがないかチェックするのをLaravelではバリデーションと呼びます。
たとえば、ユーザーに入力してもらった値に対して、以下のようなチェックを行うとします。
ログインID:必須、指定されたテーブルに入力値が存在しないか
パスワード:必須
バリデーションのコードで書くと以下のようになります。
$request->validate([
'login_id' => ['required','unique:managers'],
'password' =>['required'],
]);
各項目名の後ろに注目してみてください。
「required」と「unique」を書いてますが、それぞれ以下の意味があります。
required:入力値が空やNULLはNG
unique:指定されたテーブルに入力値と同じ値が存在するとNG、テーブルは「:」で区切った後ろに書く
ほかにも以下のようなエラーチェックを行えます。
- 文字数の上限チェック(max)
- 文字数の下限チェック(min)
- NULL許可する(nullable)
- 数値チェック(numeric)
- メールアドレスチェック(email)
- URL有効チェック(url)
- 正規表現チェック(regex:pattern)
- 確認入力チェック(confirmed)
これはあくまで一部なので、エラーチェックを行いときに改めて調べてみてください。
またバリデーションのエラーメッセージは初期値が英語になっています。
日本語に戻したい場合や、バリデーションの方法をさらに知りたい場合は以下の記事を参考にしてみてください。
まとめ
初心者向けにLaravelで最初に知っておくべきことをまとめました。
この記事で紹介したことを覚えておけば、簡単なWebシステムであれば作れます。
ぜひこの記事を参考に、Laravelの基礎をしっかり身につけてみてくださいね。