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

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

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

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

PHP

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

アップロード

アップロードは特定のファイルをウェブサーバに送るプロセスのことを指します。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

0回答

596閲覧

Laravel: フォームの入力内容がデータベースにアップロードされない

toyop

総合スコア30

Laravel

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

PHP

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

アップロード

アップロードは特定のファイルをウェブサーバに送るプロセスのことを指します。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2020/09/02 07:10

こんにちは。

フォームに入力した内容をデータベースにアップロードして一覧表示できるようにしたいのですが、以下のエラーが表示されます。

フォームを送信しようとすると、

403 This action is unauthorized.

このエラーが表示され、ページを更新すると

BadMethodCallException

Call to undefined method App\Models\User::products()
http://localhost:8000/products

このエラーに切り替わります。

データベースにusersテーブルとproductsテーブルがあり、productsテーブルがusersテーブルの従テーブルになっています。フォームをアップロードするときにユーザーidも登録されるようにし、一覧表示するときはユーザーidをもとに、商品を一覧表示できるようにしたいです。

web.php

php

1 Route::get('/product/create', 'ProductController@create'); //productの作成 2 Route::post('/product', 'ProductController@store'); //productの追加 3 Route::get('/product', 'ProductController@index'); //productの表示

web.php

php

1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use App\Product; 7use Illuminate\Support\Facades\Auth; 8use App\Http\Requests\ProductRequest; 9 10class ProductController extends Controller 11{ 12 public function index() 13 { 14 $products = Auth::user()->products()->get(); 15 16 return view('product.show')->with(['products' => $products]); 17 } 18 19 public function create() 20 { 21 return view('product.create'); 22 } 23 24 public function store(ProductRequest $request) 25 { 26 $product = new Product; 27 $product->user_id = $request->user()->id; 28 $product->name = $request->name; 29 $product->price = $request->price; 30 $product->description = $request->description; 31 $product->category_id = $request->category_id; 32 if ($request->hasFile('image')) { 33 $path = $request->file('image')->store('public/product'); 34 $product->image = basename($path); 35 } 36 $product->save(); 37 return redirect('/product/create'); 38 } 39}

create.blade.php

php

1 <div class="col-md-9"> 2 @if ($errors->any()) 3 <div class="alert alert-danger"> 4 <ul> 5 @foreach ($errors->all() as $error) 6 <li>{{ $error }}</li> 7 @endforeach 8 </ul> 9 </div> 10 @endif 11 @if (session()->has('message')) 12 <div class="alert alert-success"> 13 <ul> 14 <li>{{ session()->get('message') }}</li> 15 </ul> 16 </div> 17 @endif 18 <div class="card card-primary"> 19 <div class="card-header">メニューの登録</div> 20 <div class="card-body"> 21 <form action="/product" method="post" enctype="multipart/form-data"> 22 {{ csrf_field() }} 23 <p><label>商品<br> 24 <input class="form-control" type="text" name="name" value="{{ old('name') }}"> 25 </label></p> 26 <p><label>値段<br> 27 <input class="form-control" type="text" name="price" value="{{ old('price') }}"> 28 </label></p> 29 <p><label>説明<br> 30 <textarea class="form-control" name="description" value="{{ old('description') }}" rows="6"></textarea> 31 </label></p> 32 <p><label>カテゴリー<br> 33 <select type="text" name="category_id" value="{{ old('category_id') }}"> 34 @foreach(config('category') as $key => $score) 35 <option value="{{ $key }}">{{ $score }}</option> 36 @endforeach 37 </select> 38 </label></p> 39 <p><label>画像<br> 40 <input type="file" name="image"> 41 </label></p> 42 <p><button type="submit" class="btn btn-success">登録</button></p> 43 </form> 44 </div> 45 </div> 46 </div>

リレーションがうまくできていない気がしているのですが、原因がわかる方いらっしゃいましたらご教授お願いいたします。よろしくお願いします。

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

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

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

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

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

m.ts10806

2020/09/02 07:19

products()メソッドはどこでしょう。
toyop

2020/09/02 07:51

m.ts10806さん コメントありがとうございます。 特にproductsメソッドはないのですが、 $products = Auth::user()->products()->get(); の箇所のことでしょうか。
toyop

2020/09/02 08:38

もしかしてUser.phpに記述してあるpublic functionのことでしょうか。
Suumon

2020/09/02 13:25

public functionの後の関数名が何かは分からないですが、 少なくともUser.php内のproductsメソッドが原因でエラーがでているのですから、 User.php内の処理は上記に追記おいたほうがいいかと。。
yuki84web

2020/09/03 05:45

コントローラーも掲載願います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問