2017-02-26 88 views
1

我试图使用Auth::user()->id将user_id作为'外键'插入到问题表中。如何将用户标识保存为用户模型的关系?

我的模型:

public function user(){ 
     return $this->belongsTo('App\User'); 
    } 
    //saves post 
    public function saveQuestion(buildQuestion $buildQuestion, $userId){ 
     $buildQuestion->user_id = $userId; 
     return $this->user()->save($buildQuestion); 
    } 

我的控制器:

public function submitQuestion(Request $request,buildQuestion $buildQuestion){ 

     $answers = new buildQuestion($request->all()); 


     if (Auth::user()){ 

      $buildQuestion->saveQuestion($answers, Auth::user()->id); 

     }else if(Auth::guest()){ 
      abort (403, 'Not Logged In'); 

     } 
    } 

我不认为我应该被传递buildQuestion作为模型的参数。

当我提交表单,我得到这个错误:调用未定义的方法照亮\数据库\查询\生成器::保存()

+1

你应该避免定义模型中的保存功能。它应该去控制器。使用模型来定义关系,增变器等,但不是控制器任务 –

回答

0
Class BuildQuestion{ 
    public function user(){ 
     return $this->belongsTo('App\User'); 
    } 
... 

    Class User{ 
    public function buildQuestion(){ 
     return $this->hasMany('App\BuildQuestion'); 
    } 
... 

控制器

public function submitQuestion(Request $request){ 

    $answers = new buildQuestion($request->all()); 


    if (Auth::user()){ 

     Auth::user()->buildQuestion()->create($answers); 

    }elseif(Auth::guest()){ 
    //suggestion redirect to login page 
    //return redirect('/login'); 
     abort (403, 'Not Logged In'); 

    } 
}