ziedinjsh Report post 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 Share this post Link to post Share on other sites
ziedinjsh Report post 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){ } Share this post Link to post Share on other sites
waplet Report post 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 Share this post Link to post Share on other sites
jurchiks Report post 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ā? Share this post Link to post Share on other sites
ziedinjsh Report post Posted August 19, 2016 Laikam, kā tad ir jadara? Varbūt kkur kāds piemērs? Share this post Link to post Share on other sites
daGrevis Report post 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"? Share this post Link to post Share on other sites
Mr.Key Report post 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 Share this post Link to post Share on other sites
goma smile Report post Posted September 12, 2016 Ko sakat par šādu uzglabāšanas metodi ? http://www.sideralis.org/baobab/ Share this post Link to post Share on other sites
waplet Report post 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. Share this post Link to post Share on other sites