php5なuploaderをlaravelに移植してauroraで使うとか(1) - とりあえずsetup(sail, breeze使ってる) DB構造まで
大体、誰が今更php5でPEARとかMDB2とか使うんだよって話だよ。
前のコード
以下
laravelへの移植にあたっては
まあふつーにbladeを使いますかあ、breezeはテンプレとして使ってもいいと思うけど認証は今回供えないし、あってもなくてもどっちでもいいや。でもlaravel.buildを使ってーの、sailは使わせてもらいますん。sail使いたくないとあんま参考になんないかもしれないね。
curl -s "https://laravel.build/example-app?with=mysql" | bash
こうなった場合はシステムのdockerが古い
ERROR: Invalid interpolation format for "laravel.test" option in service "services": "${APP_PORT:-80}:80"
ERROR: Invalid interpolation format for "laravel.test" option in service "services": "${APP_PORT:-80}:80"
ERROR: Invalid interpolation format for "laravel.test" option in service "services": "${APP_PORT:-80}:80"
ERROR: Invalid interpolation format for "laravel.test" option in service "services": "${APP_PORT:-80}:80"
Get started with: cd example-app && ./vendor/bin/sail up
% cd example-app
% vi docker-compose.yml
で
version: "3"
とかを先頭に加える必要がある。その後
./vendor/bin/sail up
する(とりあえず)
レポジトリを用意した
今回は
https://gitlab.com/catatsumuri/simple-uploader-laravel
というレポジトリを用意した。まあここに投入するのであるが、このままだとport80をlistenしていてなんとなくキモいので8000ポートに変更する。まあ久々のlaravelの記事だしちゃんと書くか。
APP_NAME="Simple Uploader"
APP_ENV=local
APP_KEY=base64:UK0MaqSLoNHx8kuFc3QT8oHZNoEUdULvEdLBLS+tjbU=
APP_DEBUG=true
APP_URL=http://localhost
APP_PORT=8000
APP_PORTに8000を指定した。何ならAPP_NAMEも変更してある。しかしこの.envはVCSに含まれないので後から.exampleにコピーしておこう。
いずれにせよ。
./vendor/bin/sail up
するとhttp://server:8000/で
こんなんがみえたらまあ成功っちゃ成功だろう
とりあえずこの時点でgitlabにinitial commitとして送っておく
% git init
hint: Using 'master' as the name for the initial branch. This default branch name
hint: is subject to change. To configure the initial branch name to use in all
hint: of your new repositories, which will suppress this warning, call:
hint:
hint: git config --global init.defaultBranch <name>
hint:
hint: Names commonly chosen instead of 'master' are 'main', 'trunk' and
hint: 'development'. The just-created branch can be renamed via this command:
hint:
hint: git branch -m <name>
Initialized empty Git repository in /home/admin/example-app/.git/
% git add .
% git commit -m "init"
% git pushうんたらかんたらとか
つわけでここまでのrepos作ったから
cloneし直しときましょ
% git clone https://gitlab.com/catatsumuri/simple-uploader-laravel.git
これで取れるか。システムのcomposerつかえないなら
% docker run --rm -it -v $(pwd):/app composer install --ignore-platform-reqs
% cp .env.example .env
% ./vendor/bin/sail up -d
% ./vendor/bin/sail artisan key:gen
とかで一応は使えるだろう。まあ基本的にdockerで動かすの前提で話しているし(dockerじゃなくても動くけどな)
あとmigrateできてるか確認
% ./vendor/bin/sail artisan migrate
INFO Preparing database.
Creating migration table ...................................................... 39ms DONE
INFO Running migrations.
2014_10_12_000000_create_users_table .......................................... 58ms DONE
2014_10_12_100000_create_password_reset_tokens_table .......................... 35ms DONE
2019_08_19_000000_create_failed_jobs_table .................................... 52ms DONE
2019_12_14_000001_create_personal_access_tokens_table ......................... 77ms DONE
usersとか含めて今回必要ないんだけど、まあ何となく付いてきてるから入ったって話
Breeze
でまあやっぱこれ、入れとこう。フロントエンドのコードを吹いてくれるのは楽だし。前にも書いたように、認証は使わねえけどな
% ./vendor/bin/sail composer require laravel/breeze --dev
% ./vendor/bin/sail artisan breeze:install blade
フレームワークは最初の一歩が面倒くせえよなあ、、、キマっちゃえば後は速いけど
viteの設定はまあ例によって同じように書いときますた。hostが違う場合VITE_HOSTに書いといてくださいっていう。
table
まあ極力前のをひっぱりたいなと。前のschemaは
CREATE TABLE uploaded_files (
id INT AUTO_INCREMENT PRIMARY KEY,
original_name VARCHAR(255) NOT NULL,
saved_name VARCHAR(255) NOT NULL,
mime_type VARCHAR(50),
size INT NOT NULL,
uploaded_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
こんなんなっとりましたからこれに似たような感じでmodelつくりま
% ./vendor/bin/sail artisan make:model -mr UploadedFile
INFO Model [app/Models/UploadedFile.php] created successfully.
INFO Migration [database/migrations/2024_02_16_180541_create_uploaded_files_table.php] created successfully.
INFO Controller [app/Http/Controllers/UploadedFileController.php] created successfully.
migrationができたんで、ま、適当に同じような感じでこさえます
Schema::create('uploaded_files', function (Blueprint $table) {
$table->id();
$table->string('original_name');
$table->string('saved_name');
$table->string('mime_type');
$table->integer('size');
$table->timestamps();
});
% ./vendor/bin/sail artisan migrate:fresh --seed
Dropping all tables .......................................................... 166ms DONE
INFO Preparing database.
Creating migration table ...................................................... 46ms DONE
INFO Running migrations.
2014_10_12_000000_create_users_table .......................................... 76ms DONE
2014_10_12_100000_create_password_reset_tokens_table .......................... 32ms DONE
2019_08_19_000000_create_failed_jobs_table .................................... 60ms DONE
2019_12_14_000001_create_personal_access_tokens_table ......................... 93ms DONE
2024_02_16_180541_create_uploaded_files_table ................................. 38ms DONE
INFO Seeding database.
こんな撫じでした。ま、続きはまた作りましょう