同时更新两个模型(Laravel 4.2)

时间:2016-06-13 07:29:08

标签: laravel laravel-4

我有一个用户模型和捐赠者模型,其中包含捐赠者类型的其他数据。我想在用户想要更新他的个人资料时同时更新这两个表。以下是代码:

//用户模型

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

我试着遵循文档,到目前为止我到了这里。提交时保存的用户数据不是捐赠者数据。

1 个答案:

答案 0 :(得分:0)

您需要像这样更改代码

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

它现在将收集对象返回给$ donor以访问$ donor模型的值,您需要按如下方式使用它: -

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