作業日誌(18日目~23日目) - Yui-Tanaka-0804/BChannel GitHub Wiki

18日目(2020/07/10)

そろそろベースの機能は出来上がってきたからbotの作成に手を出したいところ。。。

  • 管理者ログインを追加してスレッドの削除機能を/homeに移動。

19日目(2020/07/14)

20日目(2020/07/17)

  • botの非同期処理を実装。
    • .envと.env.exampleのキュー処理の指定を変更したので、コードを戻すとphp artisan config:cacheを実行する必要がある
  • コマンドを投げ込むか、コマンドの実行結果を種類ごとにイベント分けて投げ込むか

21日目(2020/07/21)

ハンズオンの準備のついでにphp artisan serveをいろいろ触ってたらLAN上に公開する方法を思い出した。

  • WSL上でip addrでアドレスを調べる(ずっとWin10側でipconfigを使って調べていた)
  • 動かねぇ!
    • WSL2だとネットワークが分断されてるのでLAN上に公開するのにひと手間いるらしい

21日目(2020/07/31)

  • パッケージの更新が来ていたので対応。特にエラーも吐いてないのでバージョン上げるだけ。
  • Botのコマンド一覧をDBに移植&いろいろ整備
    • 特定のスレッドのみで動作するやつはあとから考える
    • 候補は「スレッドごとに使えるコマンドのIDを保持するテーブルを追加で作る→コマンド検索時に噛ませる」
    • 同名のコマンドが存在する状況をどこまで許容するか(サイト全体で1つまでorスレッドごとに1つまでor複数あっても全部出力できるように変更)
    • コマンドの削除は管理者権限がいいのか…?
  • 1スレッド当たりの投稿数の制限とかしてないけど実装はデザインとかやった後でいいかな…

22日目(2020/08/04)

エラー処理で力尽きていたので日記はあとから書いた。

  • issueの整理をしたり、マイルストーンを設定して優先度の確認をしたり。思ったより多いな…まあ1ヶ月あるからいけるやろ…
  • コマンドとスレッドの対応表を作成開始。多対多の形式にたどり着くまでに色々苦戦した記憶はあるが細かいことが思い出せない。なんかbelongsToMany()を使わずに自力でメソッド実装しようとしたような…うっ頭が…
  • 中間テーブルを作成してhidden属性持たせたthread_idを登録フォームに追加して…なんでバリデーション通らないんですか!!!! 日記はここで途切れている。というわけで別日へ

23日目(2020/08/07)

前回のエラーの原因が判明した。

  1. 数値のバリデーションにdisitsを使おうとしていた。 disitsは数値かどうかに加えて桁数をバリデーションする。エラー原因は桁数の指定を書いていなかったこと。今回は桁数指定の必要がないのでnumericに修正。
  2. 全角スペースの混入。fuck you
正:<input type="hidden" name="thread_id" value="0">
誤:<input type="hidden" name="thread_id" value="0">

原因があまりにも分からなかったのでレスポンスを丸ごとデバッグログで表示したら、thread_idの中身だけがnullになっていて気付いた。ログやっぱり大事だわ…

  • belongsToMany()が動かないと思ったら綴り間違いだったorz

コマンドとスレッドの対応処理が完成。ゴールが見えてきた!(なお残りの作業量もなかなかにエグい)

何回も同じエラーに出くわしてるのでメモ

first()やget()で取得したデータからModelのメソッドにチェインさせることはできない

$data = \App\BotSpeak::where('command', $command)->latest()->first();
$data->threads();    // 動かない

$data = \App\BotSpeak::where('command', $command)->latest()->first()->threads();    // 動く