0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

オリジナルアプリの方向性

Posted at

この記事で書くこと

オリジナルアプリの方向

バックエンドは、API で投げる

  • コントローラーは view と直接やり取りせず、API を返して json で渡す

  • 今回は画像を使用しない

  • なるはやでお願い

table と controller を 1:1 のイメージ

  • 1 テーブルにつき、1 コントローラーを用意する

  • コントローラーごとに、テーブルへの CRUD をまとめる

新しい ER 図

er.png

  • 少し悩んでる->SkillDetail の EXP は合計値を保存しておきたい

    • データが大きくなりすぎるかも、経験値 1 億とか大丈夫か
  • chatGPT に聞いたら、合計経験値、Level の構成が通常らしい

create table players (
  id int,
  name varchar(20),
  total_exp int,
  level int
)
  • 方向性 -> 現行 ER のまま、exp は合計値、Read 以外で Level を編集する

  • Level の初期値は 1 にする

SkillDetail の CRUD

  • chatGPT が基本的な例を教えてくれる
SkillDetailController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class SkillDetailController extends Controller
{
    // 一覧取得
    public function index(Request $request)
    {
        // スキルの一覧を取得して返す例
        $skillDetails = SkillDetail::all(); // モデルを使用する場合
        return response()->json($skillDetails);
    }

    // 新規作成
    public function store(Request $request)
    {
        // バリデーション例
        $validated = $request->validate([
            'name' => 'required|string|max:255',
            'description' => 'nullable|string',
        ]);

        // データ作成例
        $skillDetail = SkillDetail::create($validated);
        return response()->json($skillDetail, 201);
    }

    // 更新
    public function update(Request $request, $id)
    {
        // バリデーション例
        $validated = $request->validate([
            'name' => 'required|string|max:255',
            'description' => 'nullable|string',
        ]);

        // 対象データの更新例
        $skillDetail = SkillDetail::findOrFail($id);
        $skillDetail->update($validated);

        return response()->json($skillDetail);
    }

    // 削除
    public function destroy($id)
    {
        // 対象データの削除例
        $skillDetail = SkillDetail::findOrFail($id);
        $skillDetail->delete();

        return response()->json(['message' => 'Deleted successfully'], 200);
    }
}
  • php artisan make:controller SkillDetailController --resource で簡単に作れる

  • ルーティングは下記で OK

Route::resource('skill-details', SkillDetailController::class);
  • エンドポイントの確認
src# php artisan route:list

デプロイ時に気づき

間違えは資産である

  • だからエラー画面はたくさん覚えている方が強いのだ、焦ってるから撮らないだけ

The stream or file "/src/storage/logs/laravel.log" could not be opened in append mode:

  • 対処
chmod -R guo+w storage
  • storage にアクセスできないから権限を与える

php_network_getaddresses: getaddrinfo for db failed:

  • db が名前解決できないらしい

  • docker compose up -d ではなく、docker compose up で、db の起動時エラーを確認

docker-compose.yaml
  db:
    image: mysql:8.0
    environment:
      MYSQL_ROOT_PASSWORD: example
      MYSQL_DATABASE: myapp
      MYSQL_USER: user
      MYSQL_PASSWORD: password
      lower_case_table_names: 1
  • environment の lower_case_table_names を 1 にしておくほうが良いそう

  • 設定を変えた場合、ローカルの db フォルダは rm -rf で完全に消しておく

  • 起動後は、以下のどれかが抜けてもエラーになる

docker compose exec app bash
src# composer install
src# npm install
src# npm run build
src# php  artisan migrate

暫定

  • こちらに

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?