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

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

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

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

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

Q&A

0回答

1138閲覧

Laravelで画像を含めたデータを登録すると2重登録される

mimitaro

総合スコア0

Laravel

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

phpMyAdmin

phpMyAdminはオープンソースで、PHPで書かれたウェブベースのMySQL管理ツールのことです。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Laravel 5

Laravel 5は、PHPフレームワークLaravelの最新バージョンで、2014年11月に発表予定です。ディレクトリ構造がが現行版より大幅に変更されるほか、メソッドインジェクションやFormRequestの利用が可能になります。

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

0グッド

0クリップ

投稿2021/12/01 10:26

編集2021/12/01 10:30

Laravelで販売管理システムを作成しているのですが、商品登録をすると2重で登録されてしまいます。
画像登録機能を実装するまでは正常に登録できていましたが、画像の登録ができるようになってから画像があるものとないもので、商品名、メーカー名等が同じものが2つ登録されるようになってしまいました。

Route

1// 商品登録画面を表示 2Route::get('/product/create', 'ProductController@showCreate')->name('create'); 3 4// 商品登録 5Route::post('/product/store', 'ProductController@exeStore')->name('store');

ProductModel

1//テーブル名 2 protected $table = 'products'; 3 4 // 可変項目 5 protected $fillable = 6 [ 7 'company_id', 8 'product_name', 9 'price', 10 'stock', 11 'comment', 12 'image', 13 ]; 14 15 // Companiesテーブルと関連付ける 16 public function company(){ 17 return $this->belongsTo('App\Models\Company'); 18 }

Request

1/** 2 * Determine if the user is authorized to make this request. 3 * 4 * @return bool 5 */ 6 public function authorize() 7 { 8 return true; 9 } 10 11 /** 12 * Get the validation rules that apply to the request. 13 * 14 * @return array 15 */ 16 public function rules() 17 { 18 return [ 19 'product_name' => 'required', 20 'company_id' => 'required', 21 'price' => 'required', 22 'stock' =>'required', 23 'comment', 24 'image', 25 ]; 26 }

Controller

1/** 2 * 商品を登録する 3 * 4 * @return view 5 */ 6 public function exeStore(ProductRequest $request) 7 { 8 // 商品のデータを受け取る 9 $inputs = $request->all(); 10 11 $image = $request->file('image'); 12 13 // 画像がアップロードされていれば、storageに保存 14 if($request->hasFile('image')) 15 { 16 $path = \Storage::put('/public', $image); 17 $path = explode('/', $path); 18 } else { 19 $path = null; 20 } 21 22 $product_id = Product::insertGetId([ 23 'company_id' => $inputs['company_id'], 24 'product_name' => $inputs['product_name'], 25 'price' => $inputs['price'], 26 'stock' => $inputs['stock'], 27 'comment' => $inputs['comment'], 28 'image' => $path[1], 29 ]); 30 31 \DB::beginTransaction(); 32 try { 33 // 商品を登録 34 Product::create($inputs); 35 \DB::commit(); 36 } catch(\Throwable $e) { 37 \DB::rollback(); 38 abort(500); 39 } 40 41 \Session::flash('err_msg', '商品を登録しました。'); 42 return redirect(route('products')); 43 }

view

1@extends('create.layout') 2@section('title', '商品登録') 3@section('create.content') 4<div class="row"> 5 <div class="mb-5 col-md-6 col-md-offset-2"> 6 <h2>商品登録フォーム</h2> 7 <form method="POST" action="{{ route('store') }}" onSubmit="return checkSubmit()" enctype="multipart/form-data"> 8 @csrf 9 10 <div class="form-group"> 11 <label for="title"> 12 商品名 13 </label> 14 <input 15 id="product_name" 16 name="product_name" 17 class="form-control col-md-6" 18 value="{{ old('product_name') }}" 19 type="text" 20 > 21 @if ($errors->has('product_name')) 22 <div class="text-danger"> 23 {{ $errors->first('product_name') }} 24 </div> 25 @endif 26 </div> 27 28 <div class="form-group"> 29 <label for="company_name"> 30 メーカー 31 </label> 32 <br> 33 <select class="form-control col-md-3" name="company_id"> 34 <option selected disabled></option> 35 @foreach($products as $product) 36 <option id="company_id" name="company_id" value="{{ $product->id }}">{{ $product->company_name }}</option> 37 @endforeach 38 </select> 39 @if ($errors->has('company_name')) 40 <div class="text-danger"> 41 {{ $errors->first('company_name') }} 42 </div> 43 @endif 44 </div> 45 46 <div class="form-group"> 47 <label for="price"> 48 価格 49 </label> 50 <input 51 id="price" 52 name="price" 53 class="form-control col-md-3" 54 value="{{ old('price') }}" 55 type="text" 56 > 57 @if ($errors->has('price')) 58 <div class="text-danger"> 59 {{ $errors->first('price') }} 60 </div> 61 @endif 62 </div> 63 64 <div class="form-group"> 65 <label for="stock"> 66 在庫数 67 </label> 68 <input 69 id="stock" 70 name="stock" 71 class="form-control col-md-3" 72 value="{{ old('stock') }}" 73 type="text" 74 > 75 @if ($errors->has('stock')) 76 <div class="text-danger"> 77 {{ $errors->first('stock') }} 78 </div> 79 @endif 80 </div> 81 82 <div class="form-group"> 83 <label for="comment"> 84 コメント 85 </label> 86 <textarea 87 id="comment" 88 name="comment" 89 class="form-control" 90 rows="4" 91 >{{ old('comment') }}</textarea> 92 @if ($errors->has('comment')) 93 <div class="text-danger"> 94 {{ $errors->first('comment') }} 95 </div> 96 @endif 97 </div> 98 99 <div class="form-group"> 100 <label for="image">商品画像登録</label> 101 <input type="file" class="form-control-file" name='image' id="image"> 102 </div> 103 104 <div class="mt-5"> 105 <a class="btn btn-secondary" href="{{ route('products') }}"> 106 キャンセル 107 </a> 108 <button type="submit" class="btn btn-primary"> 109 登録する 110 </button> 111 </div> 112 </form> 113 </div> 114</div> 115<script> 116function checkSubmit(){ 117if(window.confirm('送信してよろしいですか?')){ 118 return true; 119} else { 120 return false; 121} 122} 123</script> 124@endsection

制作環境

Windows
MAMP
Laravel5.8


画像登録機能実装時参考動画


Laravel歴1か月のため、まだまだ分からないことが多く、質問の仕方も下手でしょうがお力を貸していただけますと幸いです。

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

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

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

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

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

m.ts10806

2021/12/01 11:42 編集

そもそもですが、 WndowsでMAMPでLaravel という組み合わせはかなり悪手かと。 ドキュメント(日本語訳)でも仮想マシン(Linux)が推奨されています。 https://readouble.com/laravel/5.8/ja/installation.html WindowsならせめてXAMPPでしょうね。
mimitaro

2021/12/01 12:09

以前も貴方から同様の回答をいただき、その時にもお伝えしましたが、会社の指定なのでそこは変えることはできません。 解決につながることとは関係のないことだけを伝えて去るのはやめてください。
m.ts10806

2021/12/01 12:25 編集

いちいち覚えてませんよ。背景経緯も書かれていませんし、関連質問がリンクされているわけでもありませんし。LaravelでなくてもWindowsにMAMPが悪手であることはPHPやったことがある人なら大抵が感じることです。 それに環境が推奨じゃない状態で起きる問題については自己責任としか言えないかと。XAMPPにかえるだけで解決したという件をteratail含めて幾つも見てきていますし、自身で「1か月の初心者である」と仰っている状態で「環境の悪さは関係ない」と言い切れるんですか? 試しにXAMPPなり仮想マシンLinuxなりでやってみてるならともかく、です。 最低でも問題切り分けくらいにはなります。解決の糸口にさえならない話ではないです。
mimitaro

2021/12/01 12:32

つい数日前の話です。 確かに言い切ることはできませんが、これまでの不具合はすべてコードの変更で解決されています。 今回の件もコードの変更で解決できる可能性もありますし、絶対に環境が原因と言い切ることもまたできないのではないでしょうか? きちんとコードを見ていただいて、どこにも不具合がないのであれば環境が問題と考えることもできるでしょうが、前回も貴方はコードに着目した回答はせずに環境のことのみ伝え、こちらが「会社の指定なので」と伝えたところ「じゃあ会社の人に聞いてください」とのみでした。 こちらが「会社からできるだけ自力でと言われているので」と伝えましたが、その後解決につながることは助言してくれませんでした。 結局、その後他の方から「これは試しましたか?」等いただき、解決しましたが、環境のみを否定されるのであれば貴方からの助言は非常に不愉快です。 ちなみに今回の問題は同じ会社内のMacでMAMPを使用している方も同じコードで同じ現象が起きています。 これは環境のみが問題と言い切れることではないのではないでしょうか?
m.ts10806

2021/12/01 12:53 編集

赤の他人に「数日前だから」と覚えておくことを強いるのは横暴ではないでしょうか。 それに赤の他人なので >会社からできるだけ自力でと言われているので これに関しては、「じゃあ自力で考えてね」としか言えなくて、その時点で「切っている」ので普通の人なら忘れます。なんの思い入れもない赤の他人ですから。 >これまでの不具合はすべてコードの変更で解決 本日21時半時点で当質問含めて4つ質問されているようですが、1件しか解決済みになっていません。 https://teratail.com/users/mimitaro#question 回答がついていて解決しているのは1件で、その1件の回答も自己回答による自己解決で「コードは変更してないのに」と自身で書かれています(私も回答しているようですがそのことも見てから思い出しました)。 質問が「受付中」になってるので「解決」と言われても他者には伝わりません。 teratail投稿以前の話かもしれませんが、赤の他人なので書かないと分かりません。 >環境のみを否定されるのであれば 環境のみの否定はしていませんし、そもそも否定してません。 回答者が見るのは結局その質問だけです。(リンクも何もないから) この質問内容を見たときに最初に疑うのはコードよりも環境であることは言わずもがな。 後出しで「今回の問題は同じ会社内のMacでMAMPを使用している方も」と言われても「じゃあ先にそれ書いておいてよ」としか言えません。 自身で「質問の仕方も下手で」と書いているにも関わらず棚に上げ過ぎではないでしょうか。(むしろ問題解決に主眼を置きたいなら最後の1行は全く不要の文章です)
mimitaro

2021/12/01 13:09

私がいつ覚えておくよう強いましたか? 覚えていないと仰ったので、あくまでも「つい数日前のことです」と教えたのみです。 解決した質問を解決済みにしていないのは、数日経ってから解決したことや、他の方からの「回答」ではなく「質問への追記・修正依頼」で解決し、自己解決したわけでもないからです。 コードを変更していないのに解決した問題に関しては、他の箇所も同時進行でコードを書いていたので、実際にどこが問題だったのかわからなかったためです。 「赤の他人」を強く主張しているようですが、Webサービス上では皆「赤の他人」です。 その「赤の他人」が「これは試しましたか?」等の助言をくださったことにより過去の問題は解決しています。 環境を否定していないとのことですが、私にはそう捉えられました。 「同じ会社内のMacでMAMPを使用している方も」というのは後出しではなく、貴方が環境が問題だと仰ったからです。 まさかコードを見ずに環境から問題視してくる方がまた現れるとは思わなかったので。 「質問の仕方も下手で」というのは質問に載せるべきコードが不足している可能性があったからです。 解決につながるコードや確認方法を提案してくださらないのであれば、貴方とのやり取りはまったくもって不要ですし時間の無駄になるので今後返信は不要です。 こちらも解決につながらないのであれば「赤の他人」の意見をひとつひとつ覚えてられないので。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問