<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('notes', function (Blueprint $table) {
$table->id();
$table->string('title');
$table->text('content');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*/
public function down(): void
{
Schema::dropIfExists('notes');
}
};
<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Note extends Model
{
use HasFactory;
/**
* The attributes that are mass assignable.
*
* @var array
*/
protected $fillable = [
'title',
'content',
];
}
<?php
namespace App\Http\Controllers;
use App\Models\Note;
use Illuminate\Http\Request;
class NoteController extends Controller
{
// メモの一覧を表示するメソッド
public function index()
{
// データベースからすべてのメモを取得
$notes = Note::all();
// 'notes.index'ビューを表示し、取得したメモをビューに渡す
return view('notes.index', compact('notes'));
}
// 新しいメモを作成するフォームを表示するメソッド
public function create()
{
// 'notes.create'ビューを表示
return view('notes.create');
}
// 新しいメモを保存するメソッド
public function store(Request $request)
{
// リクエストデータをバリデート
$request->validate([
'title' => 'required', // タイトルは必須
'content' => 'required', // 内容も必須
]);
// リクエストデータを使って新しいメモを作成
Note::create($request->all());
// メモの一覧ページにリダイレクトし、成功メッセージを表示
return redirect()->route('notes.index')
->with('success', 'Note created successfully.');
}
// 特定のメモを表示するメソッド
public function show(Note $note)
{
// 'notes.show'ビューを表示し、特定のメモをビューに渡す
return view('notes.show', compact('note'));
}
// 特定のメモを編集するフォームを表示するメソッド
public function edit(Note $note)
{
// 'notes.edit'ビューを表示し、特定のメモをビューに渡す
return view('notes.edit', compact('note'));
}
// 特定のメモを更新するメソッド
public function update(Request $request, Note $note)
{
// リクエストデータをバリデート
$request->validate([
'title' => 'required', // タイトルは必須
'content' => 'required', // 内容も必須
]);
// 特定のメモを更新
$note->update($request->all());
// メモの一覧ページにリダイレクトし、成功メッセージを表示
return redirect()->route('notes.index')
->with('success', 'Note updated successfully');
}
// 特定のメモを削除するメソッド
public function destroy(Note $note)
{
// 特定のメモを削除
$note->delete();
// メモの一覧ページにリダイレクトし、成功メッセージを表示
return redirect()->route('notes.index')
->with('success', 'Note deleted successfully');
}
}
ルートの設定
ルートの設定
routes/web.php に次のコードを追記します。
<?php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\NoteController;
Route::get('/', [NoteController::class, 'index']);
Route::resource('notes', NoteController::class);