ユーザーモデルに、ユーザーのポスター(介入あり)をアップロードするメソッドを作成しました。
/**
* Store user's poster.
*/
public static function storePoster(Request $request)
{
if($request->hasFile('posterUpload')){
$poster = $request->file('posterUpload');
$filename = time() . '.'. $poster->getClientOriginalExtension();
Image::make($poster)->resize(356,265)->save(public_path('/uploads/posters/'.$filename));
$check = Setting_user::where([
['user_id', '=' ,Auth::user()->id],
['setting_id','=', 2],
])->first();
if(!$check)
{
$setting = new Setting_user();
$setting->user_id = Auth::user()->id;
$setting->setting_id = 2;
$setting->value = $filename;
$setting->save();
return back();
}
$check->value = $filename;
$check->update();
return back();
}
}
私のUserControllerには、Userモデルで作成された静的メソッドを呼び出す別のメソッドがあります。
/**
* Store user's poster.
*/
public function poster(Request $request)
{
User::storePoster($request);
}
これは私のルートです:
Route::post('/user-profile/store/poster', 'UserController@poster');
そして、これは「/ user-profile/store/poster」に移動したときに発生するエラーです。
Argument 1 passed to App\User::storePoster() must be an instance of App\Request, instance of Illuminate\Http\Request given, called in C:\xampp\htdocs\laravel\laravel-paper-dashboard\app\Http\Controllers\UserController.php on line 29 and defined
モデルからすべてのロジックを移動してUserControllerに配置すると、問題なく動作します。なぜか?
前もって感謝します。
コントローラーとモデルで同じリクエストクラスを使用する必要があるため、ユーザーモデルでクラスの上部にuse Illuminate\Http\Request
を追加して、どのリクエストクラスを使用するかを伝えます。