Невозможно обрезать каждую запись базы данных

Я хочу получить записи базы данных, обрезать их, а затем снова вставить их. Я попытался сделать это с помощью функции trim- и pre_replace, но в обоих случаях только некоторые записи обрезаются, а не все.

Код правильный?
Я не знаю, что не так, может быть, что-то простое. Спасибо за любую помощь!

    $table = DB::table('countries');
$result = $table->get();
$array = array();
foreach($result as $item){
$array[$item->id] = array(
'name_en' => preg_replace('/^\p{Z}+|\p{Z}+$/u', '', $item->name_en),
'name_de' => preg_replace('/^\p{Z}+|\p{Z}+$/u', '', $item->name_de)
);
}

foreach($array as $item_id => $newItem){
$update = $table->where('id', $item_id)->update($newItem);

}

0

Решение

Кажется, вы должны использовать:

$update = DB::table('countries')->where('id', $item_id)->update($newItem);

вместо:

$update = $table->where('id', $item_id)->update($newItem);

Это сработало для меня, но, конечно, для большого набора данных это займет много времени.

1

Другие решения

В качестве альтернативы вы можете обновить с помощью laravel, добавив параметр к объекту и вызвав метод save:

$table = DB::table('countries');
$result = $table->get();
$array = array();
foreach($result as $item){
$item->name_en =  preg_replace('/^\p{Z}+|\p{Z}+$/u', '', $item->name_en);
$item->name_de = preg_replace('/^\p{Z}+|\p{Z}+$/u', '', $item->name_de);
$item->save();
}

Я думаю, что проблема была в том, что вы не обновили значение правильно. Я полагаю, что триммер должен работать на вас.

1

По вопросам рекламы [email protected]