【问题标题】:laravel-5.4 - error :Creating default object from empty valuelaravel-5.4 - 错误:从空值创建默认对象
【发布时间】:2023-03-11 18:26:01
【问题描述】:

我想将图像路径存储在数据库中。我在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 方法?

标签: php database image authentication laravel-5.4


【解决方案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 路径更新数据库中用户表中的图像
    猜你喜欢
    • 2017-01-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-29
    相关资源
    最近更新 更多