我有一个表格questions
其中列answerid
值就像1,2,3,4,5,6,7,8,9,10
。现在我想在要从表中删除answer
时更新questions
表answers
。假设,我要从表中删除5
数字答案answers
并从表中删除questions
这个5
数字。但是当我这样做时questions
表是这样更新的 -[{"answerid":"1,2,3,4,6,7,8,9,10"}]
相反,我想像1,2,3,4,6,7,8,9,10
一样更新。我尝试过这样的方法——
public function deleteAnswer($id)
{
$questionId = DB::table('answers')->where('id', $id)->get(['questionid']);
$qid = $questionId[0]->questionid;
$questionAns = DB::table('questions')->where('id', $qid)->get(['answerid']);
$ansId = explode(",",$questionAns);
//dd($ansId);
while ($aid = current($ansId)) {
if ($aid == $id) {
$offset = key($ansId);
}
next($ansId);
}
unset($ansId[$offset]);
$implodeAnsIds = implode(",",$ansId);
DB::table('questions')->where('id', $qid)->update([
'answerid' => $implodeAnsIds,
]);
return 'done';
}
查询生成器上的get()
方法将始终返回集合。但是,您需要单个属性。
解决方案是pluck()
answerid
列并选择第一行。这将仅选择您需要的属性。
$questionAns = DB::table('questions')->where('id', $qid)->pluck('answerid')->first();