2015-09-26 20 views
5

Chỉ muốn bắt đầu bằng cách nói rằng tôi không có đầu mối gì tôi đang làm ... Tôi có một bảng user_info trông như thế nàyLàm cách nào để cập nhật hồ sơ người dùng? 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(); 
    }); 

Tôi đang gặp rắc rối tạo bộ điều khiển cập nhật mà trông như thế này ngay bây giờ.

public function update(Request $request) 
{ 

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

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

một lần nữa ... không có đầu mối gì tôi đang làm ...

và đây là hình thức của tôi:

<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> 

Cập nhật: Tôi đã có thể cập nhật nó như thế này:

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

Nhưng có cách nào tôi có thể làm điều gì đó như:

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

Vâng, đó là - '$ user-> user_info -> $ đĩa dữ liệu> save();' là một dòng rất lạ ... Trang có báo cáo về bất kỳ lỗi nào không? – BlitZ

+0

tôi nhận được một ngoại lệ lỗi: mảng để chuyển đổi chuỗi. Làm thế nào nó thường được viết? – joejoeso

+0

Tôi không có experence trong Laravel, tuy nhiên, đó là thông điệp PHP thuần túy. Tôi sẽ đề nghị xem xét thông qua hướng dẫn sử dụng như thế nào nó nên được thực hiện đúng cách. Ngoài ra tôi sẽ đề nghị thử một cái gì đó giống như '$ data-> save()' hoặc '$ user-> user_info = $ data-> save();'. – BlitZ

Trả lời

1

Hãy thử điều này:

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

cũng trong mô hình UserInfo của bạn thêm này:

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

Có cách nào tôi có thể thực hiện chuyển nhượng hàng loạt không? Một cái gì đó như: '' 'UserInfo -> request :: input-> all() -> save() ->' '' – joejoeso

+0

Ngoài ra, mô hình của tôi bao gồm địa chỉ nhưng đó là để được gửi từ một hình thức khác. Tôi không muốn phải sử dụng một hành động điều khiển khác cho nó. – joejoeso

+0

Tôi nhận được thông tin người dùng không tồn tại – joejoeso

Các vấn đề liên quan