Jump to content
php.lv forumi
Sign in to follow this  
ziedinjsh

Kategorija un subkategorijas.

Recommended Posts

Sveiki.. nonācu pie sarežģijuma kuram nevaru izštukot atrisinājumu.. iespējams, ka jau viegls..
Tā tad, ir pamatkategorijas kas ir datubāzē un kurām ir piesaistītas subkategorijas. Citām subkategorijām ir divas va varākas pamatkategorijas (datubāzē tiek saglabāts kā teksts,, pamatkategorijas ID atdalīts ar ","). Nesanāk pie pamatkategorijām izvadīt tās vienādās subkategorijas. php idiorm:
 

$cats = ORM::for_table('k1')->found_many();
foreach($cats as $cat){
    $k2 = ORM::for_table('k2')->where_like('k1_id', $cat->id)->find_many();
    foreach($k2 as $k){
        echo $k->name;
    }
}

šādi izvadās subkategorijas. Kā, lai izvada tās subkategorijas kurām ir divi vai vārāki piesaistītie ID?

P.S. Paldies jau iepriekš!

Share this post


Link to post
Share on other sites

wat, subkategorijas ir atsevišķā tabulā?

 

>Kā, lai izvada tās subkategorijas kurām ir divi vai vārāki piesaistītie ID?

Kā to saprast? Tev viena subkategorija ir zem vairākām pamatkategorijām?

Edited by jurchiks

Share this post


Link to post
Share on other sites

Nu piemēram ir pamatkategorijas #1 Sadzīves tehnika, #2 Dārza tehnika un #3 Meža tehnika. Subkategorijai "Motorzāģis" ir piesaistītītas pamatkategorijas #2 un #3.

Kā tad pareizi ir jāveidot DB ar tām kategorijām un subkategorijām utt?

Edited by ziedinjsh

Share this post


Link to post
Share on other sites

Eh, ar šitām shared subkategorijām ir vienas galvassāpes...

 

table categories: id, name, is_root (0|1), ...

table subcategories: category_id, subcategory_id (abi ir categories.id)

Share this post


Link to post
Share on other sites

ja to tabulu nav ziljons (ir teiksim < 100), tad es ielasītu visus ierakstus uzreiz masīvā un sasortētu kokā jau ar php.

Share this post


Link to post
Share on other sites

ja to tabulu nav ziljons (ir teiksim < 100), tad es ielasītu visus ierakstus uzreiz masīvā un sasortētu kokā jau ar php.

Kā tas īsti būtu ar ORM?

Share this post


Link to post
Share on other sites

Neesmu lietpratējs. Nenomētāt lūdzu ar veciem tomātiem. Bet man šķiet ka te idejiski pareizais risinājums būtu atsevišķa tabulā glabāt kategrijas un subkategorijas id. tad arī būtu vieglāk atlasīt info. jo kad prasītu izvadīt subkategorijas kur kategorijas id ir tāds tad arī tās tiktu atgrieztas. Kaut gan nezinot ko īsti autors grib panākt gūti tā spriest.

Share this post


Link to post
Share on other sites

Neesmu lietpratējs. Nenomētāt lūdzu ar veciem tomātiem. Bet man šķiet ka te idejiski pareizais risinājums būtu atsevišķa tabulā glabāt kategrijas un subkategorijas id. tad arī būtu vieglāk atlasīt info. jo kad prasītu izvadīt subkategorijas kur kategorijas id ir tāds tad arī tās tiktu atgrieztas. Kaut gan nezinot ko īsti autors grib panākt gūti tā spriest.

Tā arī es izdariju :D Ir tabula ar pamatkategorijām, subkategorijām un tabula kur tiek sasaistītas pamatkategorijas id ar subkategorijas id

Share this post


Link to post
Share on other sites

Tā tad esmu nonācis līdz šim, bet kā lai es izvadu kategorijas un zem viņa attiecīgās subkategorijas?
 

$k = ORM::for_table('k2')->select('cat_name_lv')->select('sub_name_lv')->inner_join('k_connect', array('k_connect.k2_id', '=', 'k2.id'))->inner_join('k1', array('k1.id', '=', 'k_connect.k1_id'))->find_many();
	foreach($k as $item){
					
	}

Share this post


Link to post
Share on other sites

pieprasi visas subkategorijas + mappingus, samapo pirms cikla main_category_id => [subcategory, subcategory...], tad ciklā tikai čeko if isset(mappings[main_category['id']]).

Share this post


Link to post
Share on other sites

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?

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×