Exemplo n.º 1
0
 /**
  * {@inheritdoc}
  */
 protected function write(array $data)
 {
     $keys = $this->newQuery()->lists('key');
     $insertData = Arr::dot($data);
     $updateData = [];
     $deleteKeys = [];
     foreach ($keys as $key) {
         if (isset($insertData[$key])) {
             $updateData[$key] = $insertData[$key];
         } else {
             $deleteKeys[] = $key;
         }
         unset($insertData[$key]);
     }
     foreach ($updateData as $key => $value) {
         $this->newQuery()->where('key', '=', $key)->update(['value' => $value]);
     }
     if ($insertData) {
         $this->newQuery(true)->insert($this->prepareInsertData($insertData));
     }
     if ($deleteKeys) {
         $this->newQuery()->whereIn('key', $deleteKeys)->delete();
     }
 }