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

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

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

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

PHP

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

Q&A

解決済

1回答

2771閲覧

【laravel】画像の更新が反映されない

yoshioka01

総合スコア21

Laravel

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

PHP

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

0グッド

0クリップ

投稿2021/12/13 09:31

編集2021/12/13 11:04

やりたいこと

・画像保存のアプリを作成したい
・画像の更新(/update/{id})をすると新しい画像をアップロードする

現状

・エラーは出てないけど、更新されない状態

###コード

Controller.php

php

1<?php 2 3namespace App\Http\Controllers; 4 5use Illuminate\Http\Request; 6use \App\Memo; 7use \App\User; 8use Illuminate\Support\Facades\Storage; 9 10 public function store(Request $request) 11 { 12 $data = $request->all(); 13 //dd($data); 14 $image = $request->file('image'); 15 //dd($image); 16 if($request->hasFile('image')){ 17 $path = \Storage::put('/public', $image); 18 $path = explode('/', $path); 19 }else{ 20 $path = null; 21 } 22 $memo_id = Memo::insertGetId( 23 ['title' => $data['title'], 24 'content' => $data['content'], 25 'user_id' => $data['user_id'], 26 'image' => $path[1], 27 'url' => $data['url'], 28 'status' => 1]); 29 30 // リダイレクト処理 31 return redirect()->route('home'); 32 } 33 34 public function update(Request $request , $id ,Memo $memos){ 35 $inputs = $request->all(); 36 37 if($request->hasFile('image')) { 38 Storage::delete('public' . $memos->image); //元の画像を削除 39 $path = $request->file('image')->store('public'); 40 $memos->image = basename($path); 41 $memos->save; 42 } 43 44 Memo::where('id',$id)->update(['title' => $inputs['title'], 45 'content' => $inputs['content'], 46 'url' => $inputs['url'] 47 ]); 48 49 return redirect()->route('home'); 50 } 51

web.php

php

1<?php 2 3 Route::group(['middleware' => ['auth', 'can:admin-higher']], function () { 4 Route::get('/newpost', 'AccountController@newpost')->name('newpost'); 5 Route::get('/create', 'AccountController@create')->name('create'); 6 Route::post('/store', 'AccountController@store')->name('store'); 7 Route::get('/edit/{id}', 'AccountController@edit')->name('edit'); 8 Route::post('/update/{id}', 'AccountController@update')->name('update'); 9 Route::post('/delete/{id}', 'AccountController@delete')->name('delete'); 10 Route::get('/userlist', 'AccountController@userlist')->name('userlist'); 11 Route::get('/userdetail/{id}', 'AccountController@userdetail')->name('userdetail'); 12 13 });

edit.blade.php

php

1@extends('layouts.app') 2 3@section('content') 4<div class="row justify-content-center ml-0 mr-0 h-100"> 5 <div class="card w-100"> 6 <div class="card-header">メモ編集</div> 7 8 <!-- メモの内容--> 9 <div class="card-body"> 10 <form method='POST' action="{{route('update',['id' => $memo['id']] ) }}" enctype="multipart/form-data"> 11 @csrf 12 <input type='hidden' name='user_id' value="{{ $user['id'] }}"> 13 14 <!-- タイトルの表示 --> 15 <div class="form-group"> 16 <input type=”text” name='title' class="form-control"rows="10">{{ $memo['title'] }}</input> 17 </div> 18 19 <div class="form-group"> 20 <textarea name='content' class="form-control"rows="10"> 21 {{ $memo['content'] }} 22 </textarea> 23 24 25 <div class="form-group"> 26 <label for="image">画像のupload</label> 27 28 <input type="file" class="form-control-file" name='image' id="image"> 29 </div> 30 31 <!--URLをとってくる--> 32 <div class="mb-3"> 33 <label for="disabledTextInput" class="form-label">URLの入力してください</label> 34 <input type="text" id="disabledTextInput" class="form-control" name='url' placeholder="URL"> 35 </div> 36 37 </div> 38 <div class="form-group"> 39 </div> 40 <button type='submit' class="btn btn-primary btn-lg">更新する</button> 41 </form> 42 43 </div> 44 </div> 45</div> 46@endsection 47 48

追加コード
Memo.php

php

1<?php 2 3namespace App; 4 5use Illuminate\Database\Eloquent\Model; 6 7class Memo extends Model 8{ 9 /* 10 public function admins(){ 11 return $this->belongsTo('App\Admin'); 12 } 13 */ 14 15 protected $fillable = [ 16 'title', 17 'contnet', 18 'url', 19 'image' 20 ]; 21}

ddで$memoを確認した結果

"image" => "UdvdOkrYjJKGMDPBVAQcVQNJ99VHHpSWl5xV4KIa.jpg"

public/storageの中身を確認⇨"UdvdOkrYjJKGMDPBVAQcVQNJ99VHHpSWl5xV4KIa.jpg"が存在している

DBの中身は更新前のimageになっている

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

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

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

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

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

yoshioka01

2021/12/13 10:54

記入してみましたがうまくいきませんでした
guest

回答1

0

ベストアンサー

PHP

1//$memos->save;じゃなくて 2$memos->save(); //です。

save()は関数です。

投稿2021/12/13 14:14

skys215

総合スコア910

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

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

yoshioka01

2021/12/13 15:10

見落としていました ありがとうございます
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問