ページビューの合計

2023年3月27日月曜日

Laravel Bootcamp: 03. Creating Chirps

https://bootcamp.laravel.com/blade/creating-chirps

前回までで環境構築とログインができるところまで来ました。

こっからが本番です。

Models, migrations, and controllers

この3つを作っていくようです。

Laravelはartisan(職人)コマンドで色々作れます。

$php artisan make:model -mrc Chirp

mrcオプションってなんだろ
php artisan make:model --help

-m, --migration       Create a new migration file for the model
-r, --resource        Indicates if the generated controller should be a resource controller
-c, --controller      Create a new controller for the model

m(migration)とc(controller)は分かるけどr(resource controller)とは具体的になんだろ?

メッセージを見るとModelとMigration fileとControllerが作成されたようです。

とりあえず気にせず進みます。

Controllerにレスポンスを書き込みます。

http://localhost:/chirps
にアクセスします。

Hello, World!
がブラウザに表示されます。

Blade

Controllerで直接Responseを返していたのをBladeのViewを返すように修正します。
Bladeはそのままコピペで

Navigation menu
navigation.blade.phpの18行目,75行目に追記します。

Dashboardの右に"Chirps"というタブが追加になります。
 

Saving the Chirp

chirps.storeで保存するようです。

ChirpControllerのstoreメソッドに実装を追加します。
やってるのはメッセージ欄へのバリデーション(必須入力、最大入力文字数255文字)
未入力や255文字を超える入力にはエラーメッセージを表示します。

適当な文字を入れてボタンを押すとDB関連のエラーになります。
まだ実装してないからでしょう。

Creating a relationship

Userモデルにhas Manyというリレーションシップを作成するようです。


これによると、ユーザが複数の投稿を行う(Chirperもそんな感じの機能を実装します)ような関係性だそうです。
 
app/Models/User.phpにchirpsメソッドを追加します。
 
app/Models/Chirp.phpにデータmessageを追加します。これで画面で入力したメッセージを永続化することができるのでしょう。
 

Updating the migration

ああ、 マイグレーションファイル「databases/migration/<timestamp>_create_chirps_table.php」を見るとidとtimestampしかありません。
ユーザIDとメッセージを格納するための定義を追加するようです。
現時点でDB上にはchirpsというテーブルはありません。
ユーザIDとメッセージの定義を追加した上で以下のコマンドを実行します。
$php artisan migrate
実行したらDB上にテーブル「chirps」が生成されました。

画面に戻って適当なメッセージを入力してボタンを押したら初期画面に戻りました。
DBを確認するとchirpsに1行データが挿入されていました。
id, created_at, updated_atは自動的にデータが設定されていますね。
user_idもログインしているユーザのuser_idも設定されています。
簡単すぎて逆にとまどいます。


php artisan migrateに関して
開発していく内にテーブル構造が変わったり追加になります。
何度か実行することになるでしょう。
一から作成するだけでなく特定のテーブルだけ再作成したい時もあるでしょう。以下のサイトが参考になります。

 

Testing it out

投稿を保存することができるけど、投稿を見ることはできません。
今後は表示画面を作ることになるのかな?


Artisan Tinker

?なんでしょうか
ググるとLaravelのコードが実行できる対話型のコンソールらしいです。
【Laravel】Laravel tinkerを使ったら開発が快適になった話
https://e-seventh.com/laravel-tinker-ease-develop/

ああ、なるほど
作った機能をテストするにはそれを呼び出す機能も作らないといけないけど
Tinkerを使えば機能を直接呼び出せるということですね。

$php artisan tinker

実行すると版数表示とプロンプト">"が表示されました。
ShellScriptの対話モードと似ていますね。



Chirp::all();
実行したら、Class "Chirp" not found.
というエラーになりました。
 
ぐぐったら

どうやらChirpクラスが自動ロードされないためのクラスが見つからないのが原因だそうです。
composer dump-autoloadを実行すれば良いらしいです。
 
その後に、Chirp::all();
を実行すると想定する結果が得られました。

Ctrl+cを押すと対話モードから抜けれます。
 
では次のチャプターに行きましょう。

Continue to start showing Chirps...

0 件のコメント:

コメントを投稿

Laravel再学習

フロントエンド系の方に興味が行っていましたがまたバックエンド系に戻ってきました。 Laravelです。 かなり忘れてます、自分のブログを見ながらもう一度です。 今回はMVCパターン、そして Eloquentを使えるようになるのが目的です。 まずはプロジェクト作成から 1. Com...