This is an interesting problem that i believe can have a reasonable
solution using cakephp. i'm not going to get into the background, but
it stems from this idea:

http://fornicode.com/2008/03/18/cakephp-a-has-either-association/

now for the business.

my current company has a custom built CMS and i've convinced them to
start implementing cakephp for it. It's not going to be a complete
overhaul, but a slow migration. The CMS manages multiple products with
tons of different attributes for an online store. so the data model
consists of multiple product tables and a product category table.

Over time, product pricing became an issue since there were multiple
price mechanisms involved for different products, so we came up with a
solution to create a pricing system that was separate from the product
tables. This could allow for different pricing for time based events
as well as flat priced items. to match the pricing model  with the
specific product, one simply needs to pass the product_id and the
product_category_id, then all relevant pricing can be retrieved. Now,
this method worked so well, we started creating other general
separations, like an image table and a google_maps table, each having
a product_id and product_category_id field to relate the data.

following this pattern, we now have multiple "attribute" tables, and
will probably add more, like videos, artices,etc.


Now for the Cake

so we have over 50 product categories and associated tables. I've
created models in cakephp for a bunch of these products and came
across... "The Issue": I need to add a new "attribute" table to all
these models. So instead of going through each of these 50 model files
and adding the hasMany association i could do... well... i'm not sure.

luckily i'm just foreseeing this problem, which is very likely to
happen, and would like to ask for a solution.

Here's the mechanics:

each of these attribute tables requires a product_category_id. So i
pass that in, say, the Shoe model, which has a product_category_id =
12. The Shoe model has all the attribute tables, but i will only show
the Image, and Video association examples for brevity:


var $hasMany = array(
  'Image' => array(
  'className' => 'Image',
  'conditions' => 'product_category_id = 12', //12 is the shoe product
category
  )
);

var $hasMany = array(
  'Video' => array(
  'className' => 'Video',
  'conditions' => 'product_category_id = 12',
  )
);

etc.

as you can see, the product_category_id must be passed in each product
model, so if i have over 50 products besides shoes, adding a new
attribute table would be cumbersome to say the least.

1) I've thought of using an include file, but you cannot pass a
variable when defining class vars, so replacing the '12' with a
$variable is not possible.

2) I've thought of having a dummy table to relate to all the
"attribute" tables, and maybe simply including the dummy table in my
product models. But this doesn't seem to be a possible solution to my
knowledge.

3) so could some kind of model behavior be a solution? Not sure how to
go about this option.

If anyone could point me in a good direction, i think this would be a
great advantage to use cakephp over our custom built CMS. Thanks to
all!

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"CakePHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to