在我使用 php implode 方法的地方更新特定列值时遇到问题,更新不正确



我有一个表格questions其中列answerid值就像1,2,3,4,5,6,7,8,9,10。现在我想在要从表中删除answer时更新questionsanswers。假设,我要从表中删除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();

最新更新