2015-09-26 62 views
5

只想说我不知道​​我在做什么...... 我有一个user_info表中,看起来像这样如何更新用户配置文件? Laravel-5

Schema::create('user_info', function(Blueprint $table){ 
     $table->increments('id'); 
     $table->unsignedInteger('user_id'); 
     $table->foreign('user_id')->references('id')->on('users')->onDelete('cascade')->onUpdate('cascade'); 
     $table->string('address'); 
     $table->string('city'); 
     $table->string('state'); 
     $table->string('zip'); 
     $table->text('description'); 
     $table->text('experience'); 
     $table->timestamps(); 
    }); 

我无法创建更新控制器开始其看起来像现在这样。

public function update(Request $request) 
{ 

    $user = $request->user(); 
    $data['description'] = $request->input('description'); 
    $data['experience']=$request->input('experience'); 

    $user->user_info -> $data->save(); 
} 

再次...不知道我在做什么...

,这是我的表格:

<div class='col-md-10 well form-well'> 
     {!! Form::open(['method' => 'PATCH', 'action'=> ['[email protected]', Request::user()->id]]) !!} 
     <div class='row'> 
       <div class='form-group'> 
        <div class='col-md-2'> 
         {!! Form::label('description', 'About You')!!} 
        </div> 
        <div class='col-md-7'> 
         {!! Form::textarea('description', null, ['class'=>'form-control', 'rows'=>'3'])!!} 
        </div> 
       </div> 
     </div> 
     <div class='row'> 
       <div class='form-group'> 
        <div class='col-md-2'> 
         {!! Form::label('experience', 'Experience and Skills')!!} 
        </div> 
        <div class='col-md-7'> 
         {!! Form::text('experience', null, ['class'=>'form-control'])!!} 
        </div> 
       </div> 
     </div> 
     <div class='form-group'>    
      {!! Form::submit('Save Changes',['class'=> 'btn btn-md btn-success']) !!} 
      {!! Form::close()!!} 
    </div> 

更新:我能像这样更新:

$user->user_info->description = $data['description']; 
    $user->user_info->experience = $data['experience']; 
    $user->user_info->save(); 

但是,有没有办法,我可以这样做:

$user->user_info->$request::Input::all(); 
$user->user_info->save(); 
+0

好吧,那 - '$用户> USER_INFO - > $数据 - >保存();'是一个非常奇怪的行...页面报告有关任何错误? – BlitZ

+0

我收到一个错误异常:数组到字符串的转换。通常如何写? – joejoeso

+0

我在Laravel没有经验,但是,它是纯粹的PHP消息。我建议通过手册了解应该如何正确完成。另外我会建议尝试像'$ data-> save()'或'$ user-> user_info = $ data-> save();'。 – BlitZ

回答

1

试试这个:

public function update(Request $request, $id) 
{ 
    $User = User::with('user_info')->find($id); 
    if(!$User) { 
    return response('User not found', 404); 
    } 

    $UserInfo = $User->user_info; 
    if(!$UserInfo) { 
    $UserInfo = new UserInfo(); 
    $UserInfo->user_id = $id; 
    $UserInfo->save(); 
    } 

    try { 
    $values = Input::only($UserInfo->getFillable()); 
    $UserInfo->update($values); 
    } catch(Exception $ex) { 
    return response($ex->getMessage(), 400); 
    } 
} 

也是你的UserInfo模型补充一点:

protected $fillable = array('description', 'experience'); 
public function getFillable() { 
    return $this->fillable; 
} 
+0

有没有一种方法可以做批量分配?例如:'''UserInfo - > request :: input-> all() - > save() - >''' – joejoeso

+0

此外,我的模型包含地址,但要从另一个表单提交。我不想为它使用不同的控制器操作。 – joejoeso

+0

我得到的用户信息不存在 – joejoeso