全体の実施の流れを俯瞰する
まず最初に、これからやろうとしていることをざっと予習する。
・モデルを作成する)
マイグレーションファイルを作ってテーブルを定義して、Schema::create()でカラム定義(各カラムの型/サイズの定義)をして、最後にモデルを作る。ただ、migrationとmodelの関連付は現時点で若干謎がある。
・コントローラーを作る)
リソースコントローラを使ってCRUD操作を1行のコードでコントローラに割り当てる。URL上で指定されるコマンドに応じてルート情報を記載していく。
・ビューを作る)
index.blade.phpでコントローラで指定されたパスにあるview()で処理をする。ここでまたTailwindCSSが登場するけど、会いたくないなあ。。
モデルを作成する
テーブルを作る
マイグレーションファイルを作る
以下のコマンドでマイグレーションファイルが作成される。
php artisan make:migration create_tasks_table
マイグレーションファイル内のSchema::create関数に、下記のようなカラム定義をする。
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('tasks', function (Blueprint $table) {
$table->id();
$table->string('name',100);
$table->boolean('status')->default(false);
$table->timestamp('updated_at')->useCurrent()->nullable();
$table->timestamp('created_at')->useCurrent()->nullable();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::dropIfExists('tasks');
}
};
テーブルを作成する
マイグレーションファイルを実行するために以下のコマンドを実行する。
php artisan migrate
マイグレーションファイルで定義したように、phpMyAdminのデータベースlaravel_testに、create_tasks_tableというテーブルが用意される。カラム定義も指定通り。

モデルを作る
tasksテーブルの作成ができた。
このテーブルからデータを取得したり、保存するモデルを作成する。
php artisan make:model Task
チュートリアルブログでは、
テーブル名が、「tasks」と複数形だったので、モデル名は単数形になります。
と書いてある。
この文字面の関係で、テーブルとモデルの関連付けができる、ということなのか。
app/Modelsは以下に以下のTask.phpが作成される。
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Task extends Model
{
use HasFactory;
}
コードを見る限り、tasksテーブルとの関連付は特になさそう。
でも、モデル作成はこれで終わり??らしい。
コントローラーを作る
復習になるが、コントローラはモデルとビューを繋ぐ肝心要。
ルーティングという仕組みを使って、CRUD操作(Create/Read/Update/Delete)を1行のコードで割り当てるリソースコントローラを用いる。
リソースコントーラーを作る
php artisan make:controller TaskController –resource
TaskController.phpが作成された。
あらかじめCRUD操作に必要なメソッド群(index、create、store、show、edit、update、destroy)のテンプレートが書かれている。
大事なことは、リソースコントローラで作られたCRUD操作メソッドに処理を橋渡しするのはルーティングという仕組みが行うということ。
route/web.phpに以下を記載すると、橋渡しが完了する、らしい。
Route::resource('tasks', TaskController::class);
この状態で以下のコマンドを実行すると現在のルーティング情報を確認できる。
php artisan route:list

チュートリアルブログでは
「このURIにアクセスがあったら、このアクションを実行する」という関係があらかじめ決まっているので、あとはその決まりに従って実装していきます。
波括弧で{ }となっている部分は、IDです。
たとえば、「/tasks/2」でGETアクセスだったら、showメソッドが呼ばれて、IDが2のタスクを表示します。
とあるが、意味がさっぱりわからない。
とくに
たとえば、「/tasks/2」でGETアクセスだったら、showメソッドが呼ばれて、IDが2のタスクを表示します。
???
実際にTaskController.phpのshowメソッドに以下を記述してみた。
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
if ($id == 2){
dd("idは{$id}です");
}
else {
dd("No,idは{$id}です");
}
}
tasks/2でアクセスしたら

がddによってブラウザに表示された。
tasks/4でアクセスすると

と表示された。
そういうことか。
前に使ったルーティングでは、この”tasks”にくるワードを変えて、Controller処理を割り当てていたけど、tasksにIDをつけて処理を分けることができるのか。
ビューを作る
時間がなくなってきた。
ビュー以降はまた次回。
コメント