Open19
久しぶりにLaravelでブログを作ってみる
目標
- 書籍に載っているブログをバグなし、脆弱性なしで動かす
環境
- m2mac
- laravel sail
完成品
完成はこちらにおいてあります。
環境構築
以下の記事を元にlaravel sailで環境構築した。
bootstrapの導入
本当はtailwind cssやreactを使いたいところだが、まずは書籍と同じようにする。そこからSPAやtailwind cssの便利さを噛み締めたい。
- なんかlaravel/uiで入れる方法もあるらしい
- よくわからない
laravelの認証の整理
phpMyAdminの導入
どうやらsail環境には入ってないらしいので、対応していく
phpmyadmin:
image: phpmyadmin/phpmyadmin
links:
- mysql:mysql
ports:
- 8080:80
environment:
#PMA_USER: "${DB_USERNAME}"
#PMA_PASSWORD: "${DB_PASSWORD}"
PMA_HOST: mysql
networks:
- sail
phpmyadminのユーザーアカウントが表示されない
.envに記載されている名前とpasswordで接続したら、phpmyadminのユーザアカウントが表示されなかった。ユーザー名をrootにしてenvに設定しているpasswordにしたらユーザーアカウントが表示された。
DBとユーザーの生成
ユーザーと同名のDBを作る
ここら辺マジでわからん😅
LaravelのDB指定
DB_DATABASE=blog
DB_USERNAME=作ったアカウント
DB_PASSWORD=作ったアカウント
にしておく(してなくてexample_appにマイグレーションされたし、deniedになった)
というか、デフォルトで作られているDBと比べてユーザー作って管理した方が安全性があるということなのかな?
Dockerの再起動
このままmigrateしようとすると
ERROR 1045 (28000): Access denied for user 'sail'@'172.XX.X.X' (using password: YES)
が出る。
sail down -v
sail up
こちらの記事を参考にしました。
Laravelを日本語化
sail php artisan lang:publish
sail composer require askdkc/breezejp --dev
sail php artisan breezejp
モデル、マイグレーションファイルの作成
sail php artisan make:model Article -m
テーブルの作成
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::create('articles', function (Blueprint $table) {
$table->id();
$table->text("title")->comment("タイトル");
$table->text("body")->comment("本文");
$table->timestamps();
});
}
sail php artisan migrate
間違えてsail artisan migrateとやったが、それでも良いらしい
テーブル作成された
サンプルデータ
sail artisan make:seeder ArticlesTableSeeder
<?php
namespace Database\Seeders;
use App\Models\Article;
use Illuminate\Database\Console\Seeds\WithoutModelEvents;
use Illuminate\Database\Seeder;
class ArticlesTableSeeder extends Seeder
{
/**
* Run the database seeds.
*/
public function run(): void
{
for ($i=1; $i < 10; $i++) {
$article=new Article();
$article->title="記事タイトル" . $i;
$article->body="記事本文" . $i;
$article->save();
}
}
}
sail artisan db:seed --class=ArticlesTableSeeder
ページテンプレートの作成
sail artisan make:component GuestLayout
完成