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を使えば機能を直接呼び出せるということですね。
実行すると版数表示とプロンプト">"が表示されました。
ShellScriptの対話モードと似ていますね。
Chirp::all();
実行したら、Class "Chirp" not found.
というエラーになりました。
どうやらChirpクラスが自動ロードされないためのクラスが見つからないのが原因だそうです。
composer dump-autoloadを実行すれば良いらしいです。
その後に、Chirp::all();
を実行すると想定する結果が得られました。
Ctrl+cを押すと対話モードから抜けれます。
では次のチャプターに行きましょう。
Continue to start showing Chirps...
0 件のコメント:
コメントを投稿