возникают проблемы при обновлении определенных значений столбцов, где я использовал метод php implode не обновляется должным образом - PullRequest
0 голосов
/ 11 июня 2018

У меня есть таблица questions, в которой значения столбца answerid похожи на 1,2,3,4,5,6,7,8,9,10.Теперь я хочу обновить questions таблицу, когда я собираюсь удалить answer из answers таблицы.Предположим, я собираюсь удалить ответ 5 номер из таблицы answers, а также удалить этот номер 5 из таблицы questions.Но когда я делаю эту таблицу 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';

}

1 Ответ

0 голосов
/ 11 июня 2018

Метод get() в построителе запросов всегда возвращает коллекцию.Однако вам нужно одно свойство.

Решением будет pluck() столбец answerid и выберите первую строку.Это только выберет нужное вам свойство.

$questionAns = DB::table('questions')->where('id', $qid)->pluck('answerid')->first();
...