2015-09-26 20 views
5

Tıpkı ben sorun güncelleme denetleyicisi oluşturma yaşıyorum buKullanıcı profilini nasıl güncellerim? 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(); 
    }); 

gibi görünen bir user_info tablo var ... ne yapıyorum hiçbir ipucu var diyerek başlamak istiyorum hangi Şu anda böyle görünüyor. Yine

public function update(Request $request) 
{ 

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

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

... hayır ne yapıyorum ipucu ...

ve bu benim formu:

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

Güncelleme: Böyle güncellemek başardı:

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

Ama böyle bir şey yapabileceği bir yolu yoktur:

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

Eh, o - '$ kullanıcı-> user_info -> $ veriye> save();' çok garip bir çizgi ... Herhangi bir hata hakkında sayfa raporu var mı? – BlitZ

+0

Bir hata istisnası alıyorum: dizi dizgisi dönüştürme. Genelde nasıl yazılır? – joejoeso

+0

Laravel'de hiç bir tecrübem yok, ancak, bu saf PHP mesajı. Elkitabı ile düzgün bir şekilde nasıl yapılması gerektiğini incelemenizi tavsiye ederim. Ayrıca, sadece $ data-> save() 'veya' $ user-> user_info = $ data-> save(); 'gibi bir şey denemenizi öneririm. – BlitZ

cevap

1

bu deneyin:

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

Kişisel Userınfo modelinde bu ekleyin:

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

Bunun yerine kitle atamamın bir yolu var mı? Şunlar gibi: '' 'UserInfo -> istek :: input-> all() -> save() ->' '' '' '' '' '' '' '' '' – joejoeso

+0

Ayrıca, benim model adres içerir, ancak başka bir formdan gönderilecek. Bunun için farklı bir denetleyici eylemi kullanmak zorunda kalmak istemiyorum. – joejoeso

+0

Kullanıcı bilgisini almıyorum – joejoeso

İlgili konular