Вы проверяли журнал ошибок? Это может дать вам представление о том, что может быть не так.
Но вот возможная проблема: переменная $step_ids
представляет собой коллекцию Laravel. Вы перебираете элементы в коллекции, но вызов DB::table('steps')->where()
ссылается на коллекцию вместо текущего идентификатора элемента (который вы назвали $steps_filt
).
Я думаю, вы, возможно, неправильно поняли, как foreach
петли работают в PHP. На первой итерации значение l oop $index
будет равно 0, а $steps_filt
будет, например, 2339.
Наивное решение для выполнения того, что вы хотите, может быть таким:
$step_ids_array = $step_ids->toArray(); // Easier to work with if both are array (or collection)
for ($i = 0; $i < count($step_ids_array); ++$i) {
$step_id = $step_ids_array[$i];
$step_text = $steps_filt[$i];
DB::table('steps')->where('id', $step_id)->update(['step' => $step_text]);
}
Обновление : Возможно, немного чище, чтобы решить это следующим образом:
$combined = $step_ids->combine($steps_filt);
// $combined will now be a collection where the keys are the IDs and the values are the texts
foreach ($combined as $step_id => $step_text) {
DB::table('steps')->where('id', $step_id)->update(['step' => $step_text]);
}