Biggest Blunder

黒克はDBに登録できるのか??!

ハイ、今度はDBに登録してみるよ~~

Google検索のAIが出した例を挙げつつ、実装していきますか~~実装コードは秘密!

バックエンド

1.マイグレーションとモデルの作成

Postクラス(任意の命名)とマイグレーションファイルを作成。

-mはマイグレーション(Migration)ファイルも同時に生成するという意味のオプション(--migration の短縮形)。

php artisan make:model Post -m

作成されたマイグレーションファイル(database/migrations/xxxx_xx_xx_create_posts_table.php)を編集。

Schema::create('posts', function (Blueprint $table) {
  $table->id();
  $table->string('title');
  $table->text('body');
  $table->timestamps();
});

マイグレーションコマンドを実行してテーブルを作成。

php artisan migrate

モデル(app/Models/Post.php)にホワイトリスト(fillable)を設定。

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Post extends Model {
  protected $fillable = ['title', 'body'];
}

2. コントローラーの作成とAPIルーティング

コントローラーを作成

php artisan make:controller PostController

routes/api.phpにルートを定義

use App\Http\Controllers\PostController;

Route::post('/posts', [PostController::class, 'store']);

app/Http/Controllers/PostController.phpに保存処理を記述。

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Models\Post;

class PostController extends Controller
{
    public function store(Request $request)
    {
        $validated = $request->validate([
            'title' => 'required|string|max:255',
            'body' => 'required|string',
        ]);

        $post = Post::create($validated);

        return response()->json([
            'message' => '登録に成功しました',
            'data' => $post
        ], 201);
    }
}

フロントエンドはメールと変わらないっすね~~。。。基本、パスを変えるだけな筈。。。

あと、、、マイグレーション前に変更加えたのを保存していなくてカラムがないと言われてしまったので、、その対処法も書いておきます。

マイグレーションをひとつ前に戻す。

php artisan migrate:rollback