【问题标题】:How to update field to push value to existing value in Laravel如何更新字段以将值推送到 Laravel 中的现有值
【发布时间】:2018-11-20 06:47:33
【问题描述】:

当用户针对一个问题多次给出答案时,我想用逗号分隔符更新questionsanswerid 列。
这是answers 下表:

id   questionid   answer
1        1         ans1 
2        1         ans2
3        1         ans3

而我的questions 表是:

id   userid   questions  answerid
1     100        q1         1
2     110        q2
3     1345       q3

在针对一个问题多次回答后,questions 表应该是这样的:

id   userid   questions  answerid
1     100        q1       1,2,3
2     110        q2
3     1345       q3 

当用户回答问题时,我将其保存到我的数据库中,如下所示:

public function saveAnswer(Request $request)
{
    $id = session()->get('did');
    $phone = session()->get('phone');
    $email = session()->get('email');
    if(empty($phone) || empty($email)){
        return redirect('donor-login');   
    }

    $answer = DB::table('answers')
                    ->insert([
                        'questionid' => $request->questionid,
                        'answer'     => $request->answer,
                        'created_by' => $id,
                        'updated_by' => $id,
                        'created_at' => date("Y-m-d H:i:s"),
                    ]);
    if ($answer) {
        DB::table('questions')
                 ->where('id', $request->questionid)
                 ->update([
                    'answerid' => ????here is my problem
                 ]);
        return back()->with('success', 'Your answer successfully saved!');
    }

}

【问题讨论】:

  • 这样简单使用->update([ 'answerid' =>DB::raw('CONCAT(answerid,",2")')]);
  • 在您的查询中用变量替换 2 时遇到问题。

标签: php mysql laravel explode implode


【解决方案1】:

用当前 id 更新 answerid 并用 , 连接

DB::table('questions')->where('id', $request->questionid)->update(['answerid'=>DB::raw("CONCAT(answerid,',".$answer."')")]);

【讨论】:

    猜你喜欢
    • 2012-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    • 2020-07-29
    相关资源
    最近更新 更多