Jump to content
php.lv forumi

Kategorija un subkategorijas.


Recommended Posts

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){

}
Link to post
Share on other sites

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 by waplet
Link to post
Share on other sites

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 by Mr.Key
Link to post
Share on other sites
  • 4 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...