Laravel调试器中的重复查询

时间:2018-10-29 14:57:06

标签: laravel laravel-5

我试图根据其他列记录来更新记录的列,但是由于对表中的每个记录执行了重复查询,因此导致重复查询。我有办法避免这种情况并改进此代码。

 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 :(得分:1)

我会将以下查询转换为雄辩的stmt:

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

要想一试,我认为您应该进行数据库原始查询(如果您落后了MySQL)

否则,您可以使用两种不同的口才技巧

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

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

如果在MySQL中启用了safe_updates,可能会遇到问题