【Laravel】local.ERROR: Trying to get property ‘id’ of non-object {“exception”:”[object] (ErrorException(code: 0):
【Laravel】local.ERROR: Trying to get property ‘id’ of non-object {“exception”:”[object] (ErrorException(code: 0):
先の投稿内容と同じパーツでの一幕。
Creating default object from empty valueの解決よりもこちらの方がだいぶかかりました。
おおよそ2時間くらい。
同じく凡ミスと思い込みで解決が遅れたというね。
自戒の事例です。
Google先生に翻訳していただくと「非オブジェクトのプロパティ『id』を取得しようとしています」との事。
idを取得しようとしてるって、このテーブルAuto_Incrementなんだけど。
と思ってしまったから他が見えなくなったんだろうなぁきっと。
問題が発生していた場所
1 2 3 4 5 6 7 8 9 |
#顧客別単価を記録する $news = new Customerprice(); $new->item_id = $value->id; $new->customer_id = $customer->id; $new->inner= $value->caseInner; $new->caseprice = $value->caseprice; $new->singleprice = $value->singleprice; $new->start = today()->format('Y-m-d'); $new->end = NULL;; |
前回と同じですね。
と言うか(時系列的にこちらが前なので)前回よりも出来の悪いスクリプトですよね。
エラーの出ない正しいコード
1 2 3 4 5 6 7 8 9 10 |
#顧客別単価を記録する $news = new Customerprice(); $news->item_id = $value->id; $news->customer_id = $customer->id; $news->inner= $value->caseInner; $news->caseprice = $value->caseprice; $news->singleprice = $value->singleprice; $news->start = today()->format('Y-m-d'); $news->end = NULL;; $news->save(); |
そうなんです、変数の件はもちろんですが、save()が無かった。
new Modelsで宣言しておいて何もしないんか!と言われてたんですね。
『Trying to get property ‘○○’ of non-object』はアロー演算子の先に値が無い時にも出てくる
過去記事でも記載している通り、このエラーはオブジェクトが存在しない時に発生します。
アロー演算子で操作できるのは『配列』ではなく『オブジェクト』。前回はViewでオブジェクトを操作しているときに発生しました。
今回も「矢印の先にオカシイ値があるのだろう」という思い込みが解決スピートを遅延させてしまいました。
‘○○’の部分が『id』である点が今回の特徴です。
Auto_Incrementなのにidで苦情を言われている場合、それはそもそもアロー演算子の先のお話ではありません。
idそのものに作用する部分(今回は$new に色々書いておいて処理が無い事)に何か不備があります。
まとめ
凡ミスの解決に合計3時間。
痛すぎる。
プログラムに慣れてきて思い込みも増えてしまったようです。
マジで気をつけなきゃ。
-
前の記事
【Laravel】local.ERROR: Creating default object from empty value {“exception”:”[object] (ErrorException(code: 0): 2020.10.17
-
次の記事
【VBScript(WSH)】コマンドプロントからSFTPでファイルをアップロードする方法 2020.10.19
コメントを残す