前提
フロントエンドはReact(TypeScript)、バックエンドはLaravelバージョン9で初めてのWebアプリケーションを作っています。
(gamebosyu.comというドメインでゲームを一緒に遊ぶ人を募集するサイトを数日前にリリースしました。よければ一度見てみてください。)
Laravelのデータベース操作についての質問です。
なお、Herokuを使っている関係上データベースにはMySQLではなくPostgreSQLを使っています。
現在データベースのテーブル内に入っているレコードはSeederを使って初期値を設定しましたが、新しいレコードを追加するのにSeederを使うと、すでにあるデータを消してしまうと思うので別の方法が良いと考えています。
実現したいこと
サービス稼働中に新しいゲームタイトルのレコードを追加する。
今後も何度か新しいゲームタイトルを追加することを見越した方法が良いです。
また、アプリのユーザーがゲームタイトルを追加するのではなく、管理者である私だけが追加することができるようにしたいです。
教えて頂きたいこと
以下、私が今のところ考えている方法を2つ並べてみます。
みなさんであればどちらの方法を採用しますか、またその理由を教えてほしいです。
また、私が考えた方法以外でもっと良いやり方があれば、その理由とやり方を教えてください。
(レコードの追加だけではなく少し変えるだけで削除、編集も行えるやり方だったらより嬉しいです。)
現状思いついた方法2つ(2番の方が有力と考えています)
1.PostgreSQLに直接SQLを打ち込む
この方法はLaravelのモデルの恩恵が得られないと思うので、あまり良くないかなと思っています。
また、新しいレコードを追加するたびにSQLを書くのも面倒かつミスが起きやすそうで怖い印象。
2. Tinkerを使ってDBを操作する
Models/Game.php
1// ここより上の部分は省略 2 3class Game extends Model 4{ 5 public functions insert($name, $image_path) { 6 // 保存したデータを$modelに格納 7 $model = $this->create([ 8 // 実際はもう少しカラムが多いですが、見やすくするためにここではカラムは2つとします。 9 'name' => $name, 10 'image_path' => $image_path 11 ]); 12 } 13 14 // この下にレコード編集用、削除用の関数も書く予定。 15}
こういうクラスをGameモデルに書いてTinkerから呼び出して使うというやり方。
Tinkerの呼び出し
1php artisan tinker
さいごに(本筋とは少し逸れた質問ですので、お答え頂けなくても構いません)
現在このサービス(gamebosyu.com)利用者は私だけなので特に問題にならないと思うのですが、ある程度利用されているサービスではこういったDB操作などはアプリをメンテナンスモードにしてから行いますか?
それともこれくらい単純なDB操作ならある程度利用者がいる場合でもそのまま実行してもよいのでしょうか?
回答お待ちしております。よろしくおねがいします!
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/09/18 04:34
2022/09/18 04:44