Хорошо, это настолько странно, что у меня нет объяснения этому, но вот решение:
1) Прежде всего вам нужно явно обновить updated_at
самостоятельно, иначе Laravel попробует и сделай это сам и сделай из всего большой беспорядок.
2) По какой-то неизвестной причине первоначальная установка просто не смогла присвоить переменные заполнителю ?
: DB::raw("REPLACE(hierarchy, ?, ?)", [$old_hierarchy, $new_hierarchy])
3) Мне пришлось сделать это, используя setBindings
, но, вдобавок ко всему, я не смог назначить их все с помощью этого метода, потому что они снова испортились бы, поэтому сделал это только для операторов DB::raw
.
Category::setBindings([$old_hierarchy, $new_hierarchy, now()])
->whereRaw("hierarchy LIKE ?", [$old_hierarchy . '>%'])
->update([
'hierarchy' => DB::raw("REPLACE(hierarchy, ?, ?)"),
'updated_at' => DB::raw("?")
]);
Если у кого-нибудь есть объяснения всей этой безумной вещи, дайте мне знать