我正在尝试按照 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,认为这是它的更新方法,但它仍然不起作用。
我需要先调用什么才能让它工作吗?
auth()->user() 返回一个身份验证外观实例,但是 当您需要更新数据时,您需要一个模型实例,所以
$userData = user::find(auth()->user()->id);
$userData->image = $filename;
$userData.save()
将此添加到routes/web.php 文件中...
使用 App\Http\Controllers\HomeController;
正如用户 @raghav 所说,使用 Auth->user() 为您提供一个 auth 用户实例, 相反,您想使用 Auth id 从集合中查找用户,例如:
$userData = User::find(auth()->id);
$userData->image = $filename;
$userData->save();