尝试上传个人资料图片时未定义方法

问题描述 投票:0回答:3

我正在尝试按照 this 教程让我的用户能够上传个人资料图片。

但是在

HomeController
中,我在最终的“更新”中收到错误“未定义的方法”。

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Database\Eloquent\Model;
use App\Models\Flight;

class HomeController extends Controller
{
    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {
        $this->middleware('auth');
    }

    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        return view('home');
    }

    public function upload(Request $request)
    {
        if($request->hasFile('image')){
            $filename = $request->image->getClientOriginalName();
            $request->image->storeAs('images',$filename,'public');
            Auth()->user()->update(['image'=>$filename]);
        }
        return redirect()->back();
    }
}

我已经尝试过“使用”上面的 Eloquent,认为这是它的更新方法,但它仍然不起作用。

我需要先调用什么才能让它工作吗?

错误打印屏幕

laravel image profile
3个回答
2
投票

auth()->user() 返回一个身份验证外观实例,但是 当您需要更新数据时,您需要一个模型实例,所以

$userData = user::find(auth()->user()->id);
$userData->image = $filename;
$userData.save()

0
投票

将此添加到routes/web.php 文件中...

使用 App\Http\Controllers\HomeController;


0
投票

正如用户 @raghav 所说,使用 Auth->user() 为您提供一个 auth 用户实例, 相反,您想使用 Auth id 从集合中查找用户,例如:

$userData = User::find(auth()->id);
$userData->image = $filename;
$userData->save();
© www.soinside.com 2019 - 2024. All rights reserved.