laravel-5.4 - 错误:从空值创建默认对象
Posted
技术标签:
【中文标题】laravel-5.4 - 错误:从空值创建默认对象【英文标题】:laravel-5.4 - error :Creating default object from empty value 【发布时间】:2017-09-15 06:30:53 【问题描述】:我想将图像路径存储在数据库中。我在vendor\laravel\framework\src\Illuminate\Foundation\Auth\RegistersUsers.php
下的控制器代码如下:
public function register(Request $request)
$this->validator($request->all())->validate();
if($request->hasFile('image'))
$image_name = $request->file('image')->getClientOriginalName();
$image_path = $request->file('image')->store('public');
$user->image = Storage::url($image_name);
$user->save();
event(new Registered($user = $this->create($request->all())));
// $this->guard()->login($user); disable autologin for new users
return $this->registered($request, $user)
?: redirect($this->redirectPath());
我收到以下错误:RegistersUsers.php 第 40 行中的 ErrorException:从空值 创建默认对象。
图像保存在公用文件夹中,但无法将图像路径保存在用户表数据库中。用户表架构Schema::create('users', function (Blueprint $table)
$table->increments('user_id');
$table->string('name');
$table->string('image');
$table->rememberToken();
$table->timestamps();
如何继续将图像路径存储在数据库中的用户表中
【问题讨论】:
如何实现create
方法?
【参考方案1】:
使用下面的简单方法:
$user = User::where('id', '=', $id)->first(); // where id is method param from url or request object
$user->save();
这在更新多个表时也更容易,其中子表中的 id 具有外键并且需要在更新过程中显式定义。
$user = User::find($id);
通常也可以在 $id
是该对象表的主键的情况下工作
【讨论】:
【参考方案2】:你还没有初始化变量$user
,所以在控制器中并且在使用它之前你必须添加$user = new User;
,假设你已经有use App\User;
或者$user = new \App\User;
如果你不这样做。
更新
如果您尝试更新现有的用户记录,您必须初始化 $user
变量,方法是根据应在请求中发送的主键进行选择,然后进行如下初始化:
$user_id = $request->input('user_id');
$user = User::find($user_id);
【讨论】:
他将它用作 laravel 用户对象,以便他可以轻松使用 `$user->save();` 我已经有use App\User;
n 代码。我不必做$user =new User;
n 代码,因为这个公共函数 register-> 处理应用程序的注册请求。意味着我已经注册了用户名和图像并进行了验证。$this->validator($request->all())->validate();
。如果我这样做 $user =new User ,那么我将向用户插入新值。在数据库中,我有一个图像条目,现在是“C:\xampp\tmp\php469E.tmp”。我需要将 tmp 路径更新为公用文件夹路径。
在 register
函数的范围内没有变量 $user
所以它没有被定义。正在尝试更新用户记录?
是的。更新数据库中用户记录中的图像。如果您检查我上传的错误图像-> 我正在使用图像路径而不是 tmp 路径更新数据库中用户表中的图像以上是关于laravel-5.4 - 错误:从空值创建默认对象的主要内容,如果未能解决你的问题,请参考以下文章