Повторяющиеся запросы в Laravel-отладчике - PullRequest
0 голосов
/ 29 октября 2018

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

 public function updateReviewColumn(){
        $reviewData = $this->pluck('indicator')->toArray();
        foreach ($reviewData as $datum) {
            if ($datum == 'Y')
                $this->where('indicator', $datum)
                    ->update(['reviewindicator' => 'Yes']);
            else
                $this->where('indicator', $datum)
                    ->update(['reviewindicator' => 'No']);
        }
    }

1 Ответ

0 голосов
/ 29 октября 2018

Я бы преобразовал следующий запрос в красноречивый stmt:

UPDATE  yourTable
SET     indicator = IF(indicator = 'Y', 'Yes','No'),    
WHERE   indicator= 'Y' OR indicator= 'N'

Чтобы сделать это одним выстрелом, я думаю, вам следует обратиться к необработанному запросу к БД (если вы отстали от MySQL)

В противном случае вы можете пойти на два разных Eloquent STMT

MyTable::where('indicator', 'Y')->update(['indicator' => 'Yes']);

MyTable::where('indicator', 'N')->update(['indicator' => 'No']);

Вероятно, вы столкнетесь с проблемами, если в MySQL включена опция safe_updates

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