2017-04-19 139 views
1

我想将图像路径存储在数据库中。 vendor\laravel\framework\src\Illuminate\Foundation\Auth\RegistersUsers.php下我的控制器代码如下:从空值enter image description here创建默认对象:laravel-5.4 - 错误:从空值创建默认对象

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()); 
} 

我收到以下错误:ErrorException在RegistersUsers.php线40。

图像正在保存在公用文件夹中,但无法保存用户表数据库中的图像路径。用户表的模式,
Schema::create('users', function (Blueprint $table) { $table->increments('user_id'); $table->string('name'); $table->string('image'); $table->rememberToken(); $table->timestamps();

如何继续在user表中的图像路径存储在数据库

+0

你如何实现你的'create'方法? – hassan

回答

0

你没有初始化变量$user所以在控制器和之前使用它,你已经添加$user = new User;假设您已经有use App\User;

$user = new \App\User;如果您没有。

更新 如果你想更新你已经选择基于它来初始化变量$user现有用户记录的,应在请求被发送,然后做这样的初始化主键:

$user_id = $request->input('user_id'); 
$user = User::find($user_id); 
+0

他将它用作laravel用户对象,以便他可以轻松使用'$ user-> save();' –

+0

我已经'使用App \ User'; n代码。我不必执行'$ user = new User;'n代码,因为这个公共函数register->处理应用程序的注册请求。意味着我已经获得用户名和图像注册并进行验证。'$ this-> validator($ request-> all()) - > validate();'。如果我做$ user = new User,那么我将为用户插入新值。在数据库中,我有一个图像的条目,现在是“C:\ xampp \ tmp \ php469E.tmp”。我的需要是更新公用文件夹路径的tmp路径。 – dynamic

+0

'register'函数的作用域内没有变量'$ user',所以没有定义。正试图更新用户记录? –

相关问题