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

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

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

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

PHP

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

Q&A

解決済

1回答

818閲覧

usertableのupdate時に挿入データがnullになってしまう。

m.kk

総合スコア23

Laravel

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

PHP

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

0グッド

0クリップ

投稿2020/07/14 06:22

編集2020/07/14 07:03

userデータのedit機能を作成しております。

データを挿入が弾かれてしまい。
デバックすると、データがnullで返されてました。
どなたかご教授お願いいたします。

Argument 1 passed to App\Models\User::userUpdate() must be of the type array, int given, called in

デバック外したらint型で送られているようです。
配列で送れるように
調べています。

view @push('cropper') <link href="{{ asset('css/cropper-custom.css') }}" rel="stylesheet"> <link href="{{ asset('css/profile_edit.css') }}" rel="stylesheet"> <link href="https://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.5.6/cropper.min.css" rel="stylesheet"> <script src="https://cdnjs.cloudflare.com/ajax/libs/cropperjs/1.5.6/cropper.min.js"></script> <script src="{{ asset('js/cropper-custom.js') }}" defer></script> @endpush @extends('layouts.app') @section('content') <div class="container"> <div class="row justify-content-center"> <div class="col-md-10"> <div class="card"> <div class="card-header">プロフィールを編集</div> <div class="card-body"> {{-- <form action="{{ route('books.update',$books->id)}}" method="POST" enctype="multipart/form-data"> --}} <form method="POST" action="{{route('users.update' ,$user->id) }}" enctype="multipart/form-data"> @csrf @method('PUT') <div class="form-group row"> <label for="profile_image" class="col-md-4 col-form-label text-md-right">プロフィール画像</label> <div class="col-md-6 py-2"> <label class="label" data-toggle="tooltip" title="画像を追加する"> <div id="display_cropped_image" class="border position-relative square-frame"> <span id="avatar" class="square_content bg-image rounded" style="background-image:url('{{ asset($user->profile_image) }}')"> <i id="avatar_plus" class="fas fa-plus fa-2x text-secondary position-absolute h-100 w-100 m-0 d-flex align-items-center justify-content-center"></i> </span> </div> <input type="file" id="input" name="book_image" accept="image/*"> </label> </div> <div class="modal fade" id="modal" tabindex="-1" role="dialog" aria-labelledby="modalLabel" aria-hidden="true"> <div class="modal-dialog" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title" id="modalLabel">Crop the image</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Close"> <span aria-hidden="true">&times;</span> </button> </div> <div class="modal-body"> <div class="img-container"> <img id="image" src=""> </div> </div> <div class="modal-footer"> <button type="button" class="btn btn-secondary" data-dismiss="modal">Cancel</button> <button type="button" class="btn btn-primary" id="crop">Crop</button> </div> </div> </div> </div> @error('profile_image') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}</strong> </span> @enderror </div> <div class="form-group row"> <label for="screen_name" class="col-md-4 col-form-label text-md-right">ユーザー名</label> <div class="col-md-6"> <input id="screen_name" type="text" class="form-control @error('screen_name') is-invalid @enderror" name="screen_name" value="{{ $user->screen_name }}" required autocomplete="screen_name" autofocus> @error('screen_name') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}</strong> </span> @enderror </div> </div> <div class="form-group row"> <lavel for="name" class="col-md-4 col-form-label text-md-right">名前</lavel> <div class="col-md-6"> <input id="name" type="text" class="form-control @error('name') is-valid @enderror" name="name" value="{{ $user->name }}" required autocomplete="name" autofocus> @error('name') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}</strong> </span> @enderror </div> </div> <div class="form-group row"> <label for="email" class="col-md-4 col-form-label text-md-right">{{ __('E-Mail Address' )}}</label> <div class="col-md-6"> <input id="email" type="email" class="form-control @error('email') is-invalid @enderror" name="email" value="{{ $user->email }}" required autocomplete="email"> @error('email') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}</strong> </span> @enderror </div> </div> <div class="form-group row"> <label for="email" class="col-md-4 col-form-label text-md-right">自己紹介</label> <div class="col-md-6"> <textarea name="self_introduction" id="self_introduction" class="form-control @error('self_introduction') is-invalid @enderror" cols="30" rows="10">{{ $user->self_introduction }}</textarea> @error('email') <span class="invalid-feedback" role="alert"> <strong>{{ $message }}</strong> </span> @enderror </div> </div> <div class="form-group row mb-0"> <div class="col-md-6 offset-md-4"> <button type="submit" class="btn btn-primary">更新する</button> </div> </div> </form> </div> </div> </div> </div> </div> @endsection
controller public function edit(User $user) { $user = auth()->user(); return view('users.edit', ['user' => $user]); } public function update(Request $request, User $user) { $user = User::find(Auth::user()->id); $data = $request->all(); $validator = Validator::make($data, [ #0-9,英数字,記号の_のみだけ登録できるよう設定 'screen_name' => ['required', 'regex:/^(\w)+$/', 'max:50', Rule::unique('users')->ignore($user->id)], 'name' => ['required', 'string', 'max:255'], 'profile_image' => ['file', 'image', 'mimes:jpeg,png,jpg', 'max:2048'], 'email' => ['required', 'string', 'email', 'max:255', Rule::unique('users')->ignore($user->id)] ]); dd($user); $validator->validate(); $user->userUpdate($user->id, $data); return redirect('users/' . $user->id); }

上のuserUpdateメソッドをモデルに記載してます。

model class User extends Authenticatable { use Notifiable; /** * The attributes that are mass assignable. * * @var array */ protected $fillable = [ 'screen_name', 'name', 'email', 'password', 'profile_image' ]; /** * The attributes that should be hidden for arrays. * * @var array */ protected $hidden = [ 'password', 'remember_token', ]; /** * The attributes that should be cast to native types. * * @var array */ protected $casts = [ 'email_verified_at' => 'datetime', ]; public function getAllUsers($user_id){ return $this->where('id', '<>', $user_id)->paginate(6); } public function userUpdate(Array $params) { if(isset($params['profile_image'])){ $this::where('id', $this->id) ->update([ 'screen_name' => $params['screen_name'], 'name' => $params['name'], 'self_introduction' => $params['self_introduction'], 'profile_image' => $params['profile_name'], 'email' => $params['email'], ]); } else { $this::where('id', $this->id) ->update([ 'screen_name' => $params['screen_name'], 'name' => $params['name'], 'self_introduction' => $params['self_introduction'], 'email' => $params['email'], ]); } return; } }

ここで更新時に画像があるなしでif文を使っております。
whereで更新idを指定しupdateメソッドへ、の流れでやっておりますがうまくいきません。
modelのuserUpdateの記述がおかしいと考えており、自分のsql文の理解が足りてないことが要因になっています。
恐れ入りますが、よろしくお願いします。

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

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

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

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

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

guest

回答1

0

自己解決

解決しました。。

$user->userUpdate($user->id, $data);

なんで$usr->idなんか書いてるんだ。。?

投稿2020/07/14 07:07

m.kk

総合スコア23

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問