public function run() { $categories = [['product', ['pt' => 'rodas', 'en' => 'wheels', 'es' => 'ruedas'], 0], ['product', ['pt' => 'estrada', 'en' => 'road', 'es' => 'carretera'], 1], ['news', ['pt' => 'geral', 'en' => 'main', 'es' => 'general'], 0], ['spec', ['pt' => 'tecnologias', 'en' => 'technologies', 'es' => 'tecnologias'], 0]]; foreach ($categories as $category) { $c = new Category(); $c->parent_id = $category[2]; $c->type = $category[0]; $c->save(); foreach ($category[1] as $lang => $value) { $lang_id = Lang::whereIso($lang)->first()->id; $t = new Translation(); $t->lang_id = $lang_id; $t->table = 'categories'; $t->table_id = $c->id; $t->value = $value; $t->save(); } } }
/** * Create a new category * * @param $type * @param $names * @param $parent_id * @return mixed */ public function create($type, $names, $parent_id) { //procurar todas as categorias com o mesmo parent_id e o mesmo tipo $categories = Category::where('type', $type)->where('parent_id', $parent_id)->get(); if (!$categories->isEmpty()) { //se o resultado não for null foreach ($categories as $category) { $translations = $this->translationRepositoryInterface->get('categories', $category->id); foreach ($translations as $translation) { //precorrer a lista de categorias e verificar a tradução de cada uma delas //se a tradução for igual para uma delas PARA if (in_array($translation->value, $names)) { return false; } } } } //se a tradução for diferente para todas adiciona-se a categoria e a tradução //cria a categoria $category = null; try { $category = new Category(); $category->type = $type; $category->parent_id = $parent_id; $category->save(); //cria as traduções foreach ($names as $iso => $name) { $lang = Lang::whereIso($iso)->first(); $this->translationRepositoryInterface->create($lang->id, 'categories', $category->id, strtolower($name)); } } catch (\Exception $e) { if (!is_null($category) && $category->exists) { $this->delete($category->id); } return false; } return true; }