Laravel - Как заменить строку в базе данных - PullRequest
0 голосов
/ 24 августа 2018

У меня есть блог на сайте. Я меняю название своего бренда. Поэтому мне нужно поменять все посты в блоге, в которых указан мой бренд

Я могу найти их как:

$search = 'old-brand-name';
$posts = \App\Models\BlogPost::where('description', 'LIKE', '%'.$search.'%')->get();

Но я должен заменить эти строки на уровне базы данных моей новой торговой маркой. Как я могу это сделать?

Ответы [ 3 ]

0 голосов
/ 24 августа 2018

Вам следует повторить каждое сообщение, а затем изменить описание, заменив old_brand_name на new_brand_name и обновив это сообщение.

foreach($posts as $post){
    $old_des = $post->description;
    $post->description = str_replace($search,'new-brand-name', $post->description);
    $post->save();
}

Надеюсь, это может помочь вам

0 голосов
/ 24 августа 2018

Если вам нужно обновить все сообщения и получить все результаты:

$old   = 'old-brand-name';
$new   = 'new-brand-name';
$posts = \App\Models\BlogPost::where('description', 'LIKE', '%' . $search . '%')
    ->get()
    ->map(function ($item) use ($old, $new) {
        $item->description = str_replace($old, $new, $item->description);
        $item->save();

        return $item;
    });

// Print all
dd($posts->toArray());
0 голосов
/ 24 августа 2018
$search = 'old-brand-name';
$posts = \App\Models\BlogPost::where('description', $search)->update('description', $newName);

Это работает только в том случае, если содержимое столбца «описание» соответствует названию вашей торговой марки, в противном случае вам необходимо предоставить более конкретную информацию о содержимом в столбце описания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...