質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

1回答

3815閲覧

Call to a member function "" on nullを解決したい

YY1228

総合スコア0

Laravel

LaravelとはTaylor Otwellによって開発された、オープンソースなPHPフレームワークです。Laravelはシンプルで表現的なシンタックスを持ち合わせており、ウェブアプリケーション開発の手助けをしてくれます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2023/01/02 20:24

前提

ここに質問の内容を詳しく書いてください。
Laravel9で更新機能を作っていたところCall to a member function update() on nullというエラーが出てしまいました。

実現したいこと

Call to a member function update() on nullエラーを解決したい。

発生している問題・エラーメッセージ

Call to a member function update() on null

該当のソースコード

※コントローラ

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\Models\Shop; use App\Models\Shop_user; use App\Models\Like; class UserController extends Controller { public function mypage(Request $id) { $query = Shop::query(); $query->join('areas', 'shops.area_id', '=', 'areas.id') ->join('genres', 'shops.genre_id', '=', 'genres.id')->get(); $items = $query->get(); $like = Like::where('user_id',\Auth::user()->id)->get(); $shop_users = Shop_user::where('user_id',\Auth::user()->id)->get(); return view('user.mypage',compact('items','shop_users','like')); } public function destroy($id) { $shop_users = Shop_user::find($id); $shop_users->delete(); return redirect()->route('user.mypage'); } public function update(Request $request) { $shop_users = Shop_user::find($request->user_id); $shop_users->update([ "date_start" => $request->date_start, "time_start" => $request->time_start, "sum_people" => $request->sum_people, ]); return redirect()->route("user.mypage"); } }

※View

<form action=" {{ route('update') }}" method="post"> @csrf @method('PUT') <table class="reserve_status"> <tr> <th>Shop</th> <td>{{ $shop_user->shop_id }}</td> </tr> <tr> <th><label>Date</label></th> <td><input type="date" name="date_start" value="{{$shop_user->date_start}}"></td> </tr> <tr> <th><label>Time</label></th> <td><input type="time" name="time_start" value="{{$shop_user->time_start}}"></td> </tr> <tr> <th><label>人数</label></th> <td><input type="number" name="sum_people" value="{{$shop_user->sum_people}}"></td> </tr> <tr> <th>予約日時変更</th> <td><input type="submit" value="予約更新"></td> </tr> </table> </form>

補足情報(FW/ツールのバージョンなど)

Laravelで更新機能を作るために下記のサイトを参考にして作成したところ、Call to a member function update() on nullというエラーが出てしまいました。調べてみたのですが、よく分からないためどのようなエラーなのかご教授いただければ幸いです。
※参考サイト
https://implist.dev/entries/0223f2a77cc411c99699585d42eee900

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

質問への回答は「formからuser_idを渡してないから」だけど根本的な原因はそんなところではなく「初心者が書いた変なブログを参考にしてるから」

今作ってるものを一旦置いて、Laravel公式のチュートリアルをやってみればいい。
https://bootcamp.laravel.com/

$shop_users = Shop_user::find($request->user_id);とか$query->join(とかみたいな使い方してる所は出て来ずルートモデル結合とリレーションを当然のように使っている。
Laravelは同じ機能でも複数の書き方ができるので初心者のコードとベテランのコードは一目見ただけで判別できる。
当然ながら公式の書き方が一番普通なので公式チュートリアルの書き方ができるのが最低限のスタートライン。

投稿2023/01/02 23:44

kawax

総合スコア10377

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2023/01/03 02:58

>公式チュートリアルの書き方ができるのが まずはチュートリアルの内容を理解できるくらいの知識技術が必要ですね。理解できないと到底フレームワークは扱えないと思う
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問