/** * 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; }