ハッピーメモメモ

私的備忘録

なんか変だな原因集

〇定数/変数

 値の変更ができない!と思っていたら、変数ではなく定数で宣言していた。

 

〇スコープ

 値の変更ができない!と思っていたら、ローカルな範囲でしか有効ではない変数を変更しようとしていた。

 

〇小文字/大文字

 DBに大文字でテーブル名をかき、呼び出すときに小文字で呼び出していたので動かなかった。

 

〇エラー表示の確認

 いろいろ変更を加えた結果、またやり直しをすると違うエラー表示がでていることがある。一度やって、変更したら、改めて挑戦してみると、少しずつ先に進めそう!

 

〇文字として入力

 「””」をつけなければいけないところで、クォーテーションが抜けていたためあたり一面真っ赤なエラー畑に。

 

〇foreachの中にreturnを記入

 returnは最終的にデータが整っている状況で渡すものなので、

 こういうときはまず空の配列を用意し、取り出して加工した中身を配列にいれ、

 最終的に完成した配列をリターンで返すとよい。

        $books = Book::all();
        $books_relation=[];
        foreach ($books as $book) {
            array_push($books_relation,$book->book_information);
        }
        return $books_relation;

 

〇axiosでデータ送信を行っているのに、Formを書いていた

 HTMLのFormが動くと、データを送ってしまう。

f:id:n-moeko1966:20211222155704p:plain

 参照:

  https://developer.mozilla.org/ja/docs/Web/HTML/Element/form

 

 コンソールログに一瞬中身がでては消える…ということになって焦った…!

 formはform要素をいれるもんかなあと思ってたけど、データ送信のためのものっていうのが大きいのかな?

 

〇Formが送れない!!!と思っていたら、フォームタグがすぐとじてて、あいさにINPUTタグとか全部含まれてない状態だった…!!

 

 

〇書いている処理があっているのに、console.log()を書く場所が処理の前だったためコンソールに期待していた値が出ず、うまくいかない~~と悩んでいた!

 

○Composition APIのset up()の中でpropsを利用できない…

→set up(props)とすればOK!(教科書p308参照)

 

〇コントローラーでデータがとれないと思っていたら、where句を複数書くことに必死になりすぎて最後のget()をつけ忘れていた。

調べて時間をかけて書いたコードほど「ここは間違っているはずがない」と思ってしまいがちだな~と反省!

        $rentals = Rental::where([
            ['user_id', $id],
            ['return_date',null],
        ])->get();

 

〇動かないよ~!と思っていたら、コントローラーでデバッグしてそのままになっていた!くそ~!!

HTTPステータスコード

400番台…リクエストするクライアント側に問題がある→Vue側を確認!

500番台…サーバー側に問題が発生してリクエストに応答できない状態→Laravel側を確認!

 

〇ルーティングうまくいかない~と思っていたら、書き方がよく分かってなかった!

・「api.php」ファイルにloginのルーティングを書いたら、api/login  というルーティングになる!!

 

〇早期リターンができない~と思っていたら、「return」つけていなかった!

・returnするとそのメソッドが終了するから、elseを飛ばした早期returnなんて書き方が可能なのだと思いますー(By佃先生)

PHPでelseを書きたくない時に使える回避手段 - Qiita

 

〇自分で書いた過去の処理をコピペして貼ってたらバグが発生してた!

同じような処理をちまちま書いてるとやんなってきちゃうよね…

コピペするのは全然アリだと思う!

ただ、コピペしたところこそコンソールログでこまめにチェックして、自分が狙った値が変数に格納されているかしっかりチェックするのが大事だな、と教訓になった!

 

phpMyAdminのデータが消える!

テストでこのコードを記述していたから

    // 各テストの後にデータベースをリセット
    use RefreshDatabase;

データベースは、本番用とテスト用は分けるものらしい!なるほど!