🎷

PHP開発 4日目

2024/05/02に公開

Laravel omikuji改変

git cloneから

今日はちょっと時間がなかったので昨日のコードをクローンしてそこから改変します。

git clone https://github.com/Takaya-kinnik/Day3.git 

うまく動かなかったので最初からやります。数をこなそう。

composer create-project laravel/laravel omikuji "10.*" 

先ずはMAMPのMySQLに新しいDB作って接続確認

.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=omikuji
DB_USERNAME=root
DB_PASSWORD=root

マイグレート
OK 接続完了

Breezeの導入

composer require laravel/breeze --dev 
php artisan breeze:install blade
php artisan migrate
npm install
npm run dev

OK ランデブしてちゃんと動きました。認証システムも導入されました。

モデル、コントローラー、テーブル(マイグレーションファイル)を1セット作りましょう。

php artisan make:model Unsei -m -c -r

ここまでは復習
一瞬だな

php artisan make:model Tag -m -c -r  

もう一つテーブルを作ろう
モデルとコントラーも一緒に

リレーションってどうやるんだろう?
なんか講座で言ってた気もするが、、、

ふむふむ
親テーブルと子テーブルでそれぞれ設定するんだな
そしてカラム名の規約を守れば自動的にリレーションでつながってくれるのか
hasManyとbelongsToをモデル内に指定するんだね

    public function up(): void
    {
        Schema::create('tags', function (Blueprint $table) {
            $table->id();
            $table->string('tag');
            $table->id('unseis_id');
            $table->timestamps();
        });
    }

親のテーブル名がunseisだから、子の規約に従えば子のリレーション用のカラム名はunsei_id(複数形ではダメ、単数形にしないと規約による認識をしてくれない。ハマった)にすれば勝手に紐づいてくれるのかな?特定のカラムに紐づけたい時は第2引数に指定するのか

モデルもリレーション用に変更

ハマった

1対多のリレ書なるデータベースの作成
モデルのクラス内に関数を書いて、それをEloquent使うときにメソッドとして呼び出すんだな
ハンズオン系の講座はそういう説明が足りないから何やっているのかわからなくなってくる。
呪文を覚えましょう的な。
暗記が得意な比嘉はいいが、私は暗記が苦手
まあ、こうやって苦労すれば理屈がちょっとずつ入ってくるからいいか。
理屈を説明してくれてる中級者以上向けの記事とかだと何書いてるのさっぱり妖精ですし。

とりあえず4日目完成

ただ単にリレーショナルデータベースで、規約に従った別テーブルのカラムから該当のデータを全部持ってくるだけ。
わかれば便利だけど難しいな。

Day4

Discussion