ziedinjsh Posted August 19, 2016 Author Report Share Posted August 19, 2016 Nu slikti, ko lai saka. Vai tu pats esi mēģinājis domāt / rakstīt kādu kodu, lai iznestu to pieprasījumu ārpus cikla? Jā, augstāk ar inner join, bet tā arī nesapratu kā izvadīt informāciju Quote Link to comment Share on other sites More sharing options...
ziedinjsh Posted August 19, 2016 Author Report Share Posted August 19, 2016 Kā lai tagad izvada zem katras pamatkategorijas subkategorijas? $results = ORM::for_table('k1')->select('k1.id')->select('k1.cat_name_lv')->group_by('cat_name_lv') ->select('k1_to_k2.k1_id')->select('k1_to_k2.k2_id') ->join('k1_to_k2', array('k1.id', '=', 'k1_to_k2.k1_id')) ->select('k2.id')->select('k2.sub_name_lv') ->join('k2', array('k1_to_k2.k2_id', '=', 'k2.id'))->find_many(); foreach($results as $result){ } Quote Link to comment Share on other sites More sharing options...
waplet Posted August 19, 2016 Report Share Posted August 19, 2016 (edited) 1. Ordero pēc Kategorijas 2. ciklā, kamer "Tekošā kategorija" == "Iepriekšējā kategorija"; do nothing 2.1 citādāk "echo Jaunā kategorija" 3. "echo Subkategorija" Edited August 19, 2016 by waplet Quote Link to comment Share on other sites More sharing options...
jurchiks Posted August 19, 2016 Report Share Posted August 19, 2016 Tā pag, vai tu tur centies kverijot main kategorijas un subkategorijas vienā kverijā, un ceri tās vienkārši izvadīt nested tree formātā? Quote Link to comment Share on other sites More sharing options...
ziedinjsh Posted August 19, 2016 Author Report Share Posted August 19, 2016 Laikam, kā tad ir jadara? Varbūt kkur kāds piemērs? Quote Link to comment Share on other sites More sharing options...
daGrevis Posted August 19, 2016 Report Share Posted August 19, 2016 > Varbūt kkur kāds piemērs? Googlē noteikti būs piemēri par rekursiju. Vai arī tu nokļuvi ciklā, kad meklēji pēc "recursion"? Quote Link to comment Share on other sites More sharing options...
Mr.Key Posted August 19, 2016 Report Share Posted August 19, 2016 (edited) CREATE TABLE product_categories id, name, etc. CREATE TABLE product_category_links category_id, parent_id, <-- NULL pirmā līmeņa kategorijai, product_categories.id 2. un zemāka līmeņa kategorijām. position etc <-- kārtošanai Pirmā līmeņa kategoriju atlase: SELECT pc.* FROM product_categories pc JOIN product_category_links pcl ON pc.id = pcl.category_id WHERE pcl.parent_id IS NULL; Otrā līmeņa kategorijas: SELECT pc.* FROM product_categories pc JOIN product_category_links pcl ON pc.id = pcl.category_id WHERE pcl.parent_id = $this->id ORDER BY pcl.position; ORM gadījumā - jāpēta FW dokumentācija, bet idejiski: class Categories. ... { // relations public function getParents() { return $this->hasMany(Categories::className(), 'id' => 'parent_id')->via( ... kur norāda, ka 'category_id' = this.id) } public function getSubcategories() { return $this->hasMany(Categories::className(), 'id' => 'category_id')->via( ... kur norāda, ka 'parent_id' = this.id) } // utt. } Tad attiecīgi: $category = new Category(); $category->parents .... $category->subcategories + statiska metode top level kategoriju atlasei, atkarībā no ORM. Tas pats many()->via(), kur parent_id IS NULL. Glabāt atsevšķā tabulā 1. līmeņa un 2. līmeņa kategorijas nevajag. Kādā brīdī gribēsies 2. līmeņa kategoriju izcelt pirmajā līmenī. Ar šo variantu tas iespējams tā, ka viena kategorija var būt gan 1., gan 2. līmeņa kategorija: Augļi Akcija! Āboli Banāni Etc. Konfektes Akcija! Akcija! Edited August 19, 2016 by Mr.Key Quote Link to comment Share on other sites More sharing options...
goma smile Posted September 12, 2016 Report Share Posted September 12, 2016 Ko sakat par šādu uzglabāšanas metodi ? http://www.sideralis.org/baobab/ Quote Link to comment Share on other sites More sharing options...
waplet Posted September 14, 2016 Report Share Posted September 14, 2016 Tādā gadījumā ņem šo - http://mikehillyer.com/articles/managing-hierarchical-data-in-mysql/ Esmu pats implementējis vienu no šiem kokiem, nekas pārāk sarežģīts nebija. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.