【问题标题】:How do I save a user id as a relation of the User model?如何将用户 ID 保存为用户模型的关系?
【发布时间】:2017-02-26 00:06:41
【问题描述】:

我正在尝试使用 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 作为模型中的参数传递。

我在提交表单时收到此错误:调用未定义的方法 Illuminate\Database\Query\Builder::save()

【问题讨论】:

  • 您应该避免在模型中定义保存函数。它应该转到控制器。使用模型定义关系、修改器等,但不使用控制器任务

标签: php laravel


【解决方案1】:
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');

    }
}    

【讨论】:

    猜你喜欢
    • 2011-01-14
    • 2014-03-05
    • 1970-01-01
    • 2016-10-12
    • 2016-10-17
    • 2010-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多