/**
  * Implement update($id, $input)
  */
 public function update($id, $input)
 {
     $item = $this->find($id);
     Log::info("Update Article {$id}", $input);
     $updatedArticle = $item->update($input);
     foreach ($item->additional as $name => $value) {
         if (isset($input[$name])) {
             $additional = ItemAdditional::where('objectID', $id)->where('Name', $name)->first();
             if (isset($additional)) {
                 if ($value != $input[$name]) {
                     $additional->update(['Value' => $input[$name]]);
                 }
             } else {
                 ItemAdditional::create(['objectID' => $id, 'Name' => $name, 'Value' => $input[$name]]);
             }
         }
     }
     //dd(__METHOD__.'('.__LINE__.')',compact('id', 'input', 'item','updatedItem'));
     return $updatedArticle;
 }
 private function findAdditional($container)
 {
     /*
      * Here we want to change the contents within the $container, not the $container,
      * so retrieve/setup $items as an array_expression holding those contents
      */
     $items = $container;
     // if $container is a paginator
     if (is_a($container, 'Illuminate\\Pagination\\LengthAwarePaginator')) {
         $items = $container->items();
     } elseif (!is_array($container) && !is_a($container, 'Illuminate\\Support\\Collection')) {
         $items = array($container);
     }
     //dd(__METHOD__."(".__LINE__.")",compact('container','items'));
     //Log::debug(__METHOD__."(".__LINE__."):  container class: ".get_class($container));
     //Log::debug(__METHOD__."(".__LINE__."):  items class: ".(is_array($items) ? "array(".count($items).")" : get_class($items)));
     foreach ($items as $upc) {
         if (isset($upc)) {
             // could be null if find($id) did not find an article
             /*
             * Add these fields from Item_Additional
                | rework             | varchar(85)  | YES  |     | NULL    |       |
             */
             $additionals = ItemAdditional::where('objectID', $upc->objectID)->get();
             foreach ($additionals as $additional) {
                 $upc->{$additional}['Name'] = $additional['Value'];
             }
             /*
             * Add these fields from Article
                | parentID           | varchar(85)  | YES  |     | NULL    |       |
                | parentSKU          | varchar(85)  | YES  |     | NULL    |       |
                | Quantity           | bigint(20)   | YES  |     | NULL    |       |
             */
             $articles = Item::from('Item as Article')->join('itemKit', 'itemKit.parentID', '=', 'Article.objectID')->select('Article.objectID', 'Article.Client_SKU', 'itemKit.Quantity')->distinct()->where('itemKit.objectID', '=', $upc->objectID)->get();
             foreach ($articles as $article) {
                 $parents = $upc->parents;
                 $parents[$article->objectID] = (object) ['parentID' => $article->objectID, 'parentSKU' => $article->Client_SKU, 'Quantity' => $article->Quantity];
                 $upc->parents = $parents;
             }
             //dd(__METHOD__.'('.__LINE__.')',compact('container','items','upc','additionals','articles','parents'));
         }
     }
     return $container;
 }