2016-06-13 16 views
0

ドナータイプのユーザーの追加データを含むユーザーモデルとドナーモデルがあります。ユーザーがプロフィールを更新したいときに同時に2つのテーブルを更新したいと思います。以下のコードは次のとおりです。2つのモデルを同時に更新する(Laravel 4.2)

//ユーザーモデル

public function donor() { 
    return $this->hasone('Donor','u_id'); 
} 

//ドナーモデル

public function user(){ 
    return $this->belongsTo('User','id'); 
} 

//コントローラ

public function updateProfile() { 
    $input = Input::all(); 
    $lat = Input::get('latitude'); 
    $lng = Input::get('longitude'); 
    $rules = array('username' => 'required|unique:users'); 
    $v = Validator::make($input, $rules); 
    $id = Auth::user()->id; 
    if ($v->fails()) { 
     return Redirect::to('donor/')->withErrors($v)->withInput(Input::all()); 
    } else { 
     $user = User::find($id); 
     $donor = User::find($id)->donor; 

     $user->username = Input::get('username'); 
     $user->name = Input::get('name'); 

     $donor->name = Input::get('name'); 
     $donor->ic = Input::get('ic'); 
     $donor->gender = Input::get('gender'); 
     $donor->blood_type = Input::get('blood_type'); 
     $donor->race = Input::get('race'); 
     $donor->religion = Input::get('religion'); 
     $donor->state = Input::get('state'); 
     $donor->address = Input::get('address'); 
     $donor->lng = $lng; 
     $donor->lat = $lat; 
     $donor->email = Input::get('email'); 
     $donor->phone = Input::get('phone'); 

     $user->save(); 
     $donor->save(); 

     return View::make('donorProfile', array('message' => 'Profile successfully updated!')); 
    } 
} 

私はドキュメントを追跡しようとしましたが、これまでにそこに行く。ユーザーデータは、ドナーデータではなくbtで保存されます。

+1

いくつかエラーが発生しますか? laravelログを確認してください。 – TheFallen

+0

私はここでエラーが発生しています。$ donor = User :: find($ id) - >列IDのドナー。 – user94743

+1

ただし、投稿を編集してエラーメッセージを貼り付けることはできますか? – TheFallen

答えて

0

はあなたがfollows-としてそれを使用する必要がありますそれは$供与モデルのためのアクセス値になりました$ドナーにコレクションオブジェクトを返します。この

$user = User::find($id); 
    $donor = $user->donor()->first(); 

のようにコードを変更する必要があります。

 $donor[0]->name = Input::get('name'); 
+0

SQLSTATE [42S22]:列が見つかりません:1054不明な列の 'id' where句(SQL:update 'donor' ...) – user94743

+0

モデルの更新 - : 'パブリック関数donor(){ return $ this-> hasone( 'Donor'、[foriegn key]、[primary key]); } ' –

+0

これらの括弧[]を入れると、配列に文字列エラーが出ますが、それらを取り出すと同じエラーが表示されます: public function donor(){ return $ this-> hasone( 'Donor' 、 'user_id'、 'id'); } SQLSTATE [42S22]:列が見つかりません:1054 'where句'内の 'id'が不明です(SQL:update 'donor''set' name' = .....) これはどこですか?このid? – user94743

関連する問題