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

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

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

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

データベース

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

Q&A

解決済

2回答

618閲覧

laravelで画像をデータベースにアップロードしたい。

yoheiiii

総合スコア91

Laravel

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

データベース

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

0グッド

0クリップ

投稿2020/11/03 04:28

編集2020/11/07 11:40

環境:Windows10,XAMPP,HeidiSQL
データベース:テーブル名:shyouhin カラム:id,name,price,gazou,updated_at,created_at

画像をデータベースにアップロードしたい。

【コントローラー】

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use App\staff; use App\staffs; use App\shyouhin; use Validator; use App\Http\Requests\ShopRequest; use Illuminate\Support\Facades\DB; use DOMWrap\Document; use GuzzleHttp\Client; class shopController extends Controller { public function index() { return view('staff_add',['msg' => 'フォームを入力してください。']); } public function create(Request $request) { $data =new staff(); $data->name = $request->name; $data->password = $request->pass; $data->save(); $validate_rule = [ 'name' => 'required', 'pass' => 'required', ]; $this->validate($request,$validate_rule); return view('staff_add',['msg' => '登録完了致しました。']); } public function list(Request $request) { $items =DB::select('select * from staffs'); return view('staff_list',['items' => $items]); } public function top() { return view('top'); } public function shyouhintop() { return view('shyouhin_add',['msg' => '商品を入力してください。']); } public function shyouhin(Request $request) { $data = new shyouhin(); $data->name = $request->name; $data->price = $request->price; $data->gazou = $request->gazou; $data->save(); $validate_rule = [ 'name' => 'required', 'price' => 'required', ]; $this->validate($request,$validate_rule); return view('shyouhin_add',['msg' => '登録完了致しました。']); } public function shyouhinlist(Request $request) { $items =DB::select('select * from shyouhin'); return view('shyouhin_list',['items' => $items]); } public function delete(Request $request) { $data = shyouhin::find($request->id); $data->delete(); return redirect('/shyouhin/list'); } public function logintop() { return view('login',['msg' => 'ユーザー名、パスワードを入力してください。']); } public function login(Request $request) { $targets = DB::table('staffs')->get(); foreach($targets as $target) { if($request->name == $target->name && $request->pass == $target->password) { return redirect('/top'); } else { return view('login',['msg' => 'ユーザー名かパスワードに誤りがあります。']); } } } public function staff_delete(Request $request) { $data = staffs::find($request->id); $data->delete(); return redirect('/shop/list'); } }

【登録画面】

<!DOCtYPE html> <html> <head> <meta charset="UTF-8"> <title>ショップ</title> </head> <body> スタッフ追加<br /> <br /> <p>{{$msg}}</p> @if(count($errors)>0) <div> <ul> @foreach($errors->all() as $error) <li>{{$error}}</li> @endforeach </ul> </div> @endif <form method="post" action="/shyouhin" enctype="multipart/form-data"> <table> @csrf <tr><th>商品名を入力してください。</th><td> <input type="text" name="name" style="width:200px" value="{{old('name')}}"></td></th> <tr><th>価格を入力してください。</th><td> <input type="text" name="price" style="width:200px" value="{{old('price')}}"></td></th> <tr><th>画像を選択してください。</th><td> <input type="file" name="gazou" style="width:200px"></td></th> <tr><th></th><td><input type="submit" value="登録"></td></tr> </table> </form> <a href="/top">業務管理システム</a> </body> </html>

【表示画面】

<!DOCtYPE html> <html> <head> <meta charset="UTF-8"> <title>ショップ</title> </head> <body> 商品一覧<br /> <br /> <table border="2"> <tr> <th>商品</th> <th>価格</th> <th>画像</th> </tr> <form method="post" action="/shop/delete"> @csrf <tr> <td> @foreach($items as $item) <input type="radio" name="id" value="{{$item->id}}"> {{$item->name}}<br /> @endforeach </td> <td> @foreach($items as $item) {{$item->price}}<br /> @endforeach </td> <td> @foreach($items as $item) <img src="{{$item->gazou}}"><br /> @endforeach </td> </tr> </table> <br /> <input type = "submit" value="削除" id = "id"> <script> var btn = document.getElementById('id'); btn.addEventListener('click',function() { window.confirm('本当に削除しますか?'); }) </script> </form> <button onclick="history.back()">戻る</button> <a href="/top">業務管理システム</a> </body> </html>

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

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

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

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

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

guest

回答2

0

ベストアンサー

$data->gazou = $request->gazou;

そのまま保存してもファイルをアップロードしたことにはならない。

Laravelの前にPHPでのファイルアップロード処理の流れを身につけるのが先。
https://www.php.net/manual/ja/function.move-uploaded-file.php

Laravelユーザーならこんなことは知ってて当然の常識として進む。
Laravelのドキュメントには「(素のPHPでのアップロードはみんな知ってる前提で)Laravelではこう書く」という情報しかない。
https://readouble.com/laravel/8.x/ja/requests.html#files

投稿2020/11/03 06:49

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

public function shyouhin(Request $request) { $data = new shyouhin(); $data->name = $request->name; $data->price = $request->price; $uploaded_image = $request->file('gazou'); if($request->hasFile('gazou') && $uploaded_image->isValid()) { $file_name = $request->file('gazou')->getClientOriginalName(); $path = $request->file('gazou')->storeAs('profiles',$file_name); } $data->gazou = $path; $data->save(); $validate_rule = [ 'name' => 'required', 'price' => 'required', ]; $this->validate($request,$validate_rule); return view('shyouhin_add',['msg' => '登録完了致しました。']); }

投稿2020/11/07 11:41

編集2020/11/07 11:42
yoheiiii

総合スコア91

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問