Wait a sec--you also don't have any Category, Sport, or Material data in that array, although they are clearly part of the query.
But, then again, you *do* have Color in there. Weird. On Sat, Apr 4, 2009 at 12:17 AM, brian <[email protected]> wrote: > I just looked closer and see that you have: > > $this->set('products', $this->paginate()); > > So, your view var should be $products. So, is this line inside of a loop? > > <?php echo $product['Product']['id']; ?> > > IOW, you're doing something like: > > foreach($products as $product) > > Anyway, as you can see from the debug output, the Color array is > present alongside each Product. So this seems a bit baffling. Can you > post the entire loop? > > BTW, you don't need the query to be: > > `colors` AS `Color` ON (`Product`.`color_id` = `Color`.`name`) > > ... as it's Color.id that Product.color_id is the foreign key for. > What you want (and what you seem to be getting, if not able to access) > is Color.name. > > I'm not sure what to make of this. Do you have any afterFind code? > > On Fri, Apr 3, 2009 at 11:58 PM, justclint <[email protected]> wrote: >> >> I forgot to mention, this is the dubug I ran: debug($products, >> $showHTML = false, $showFrom = true); >> >> >> >> On Apr 3, 8:56 pm, justclint <[email protected]> wrote: >>> I'd never used the debugger before so I had to do a little reading >>> first but I ran it and here's the results: >>> ------------------------------- >>> Array >>> ( >>> [0] => Array >>> ( >>> [Product] => Array >>> ( >>> [id] => 1 >>> [name] => Item 1 >>> [color_id] => 2 >>> ) >>> >>> [Color] => Array >>> ( >>> [id] => 2 >>> [name] => White >>> ) >>> >>> ) >>> >>> [1] => Array >>> ( >>> [Product] => Array >>> ( >>> [id] => 2 >>> [name] => Item 2 >>> [color_id] => 1 >>> ) >>> >>> [Color] => Array >>> ( >>> [id] => 1 >>> [name] => Black >>> ) >>> >>> ) >>> >>> ) >>> -------------------------------- >>> >>> So in the following under the products->color_id, I know the field is >>> getting populated in the table as an id but how do I get it to show >>> the color name that corresponds to that id? >>> >>> Thanks Brian! >>> >>> On Apr 3, 8:37 pm, brian <[email protected]> wrote: >>> >>> > Odd. The query shows that it should be in there. Did you try the >>> > debug() i mentioned? ;-) >>> >>> > On Fri, Apr 3, 2009 at 10:12 PM, justclint <[email protected]> wrote: >>> >>> > > Thanks for the quick response Brian! >>> >>> > > When I add: >>> >>> > > <?php echo $product['Color']['name']; ?> >>> >>> > > I get error: >>> >>> > > Notice (8): Undefined index: Color [APP\views\products\index.ctp, >>> > > line 48] >>> >>> > > Any suggestions? >>> >>> > > Thanks! >>> >>> > > On Apr 3, 6:56 pm, brian <[email protected]> wrote: >>> > >> The SQL query is fetching Color.name. You're looking in the Product >>> > >> array. The Color name will be in the Color array. >>> >>> > >> <?php echo $product['Color']['name']; ?> >>> >>> > >> When in doubt, do a debug($this->data) in your view. >>> >>> > >> On Fri, Apr 3, 2009 at 9:48 PM, justclint <[email protected]> wrote: >>> >>> > >> > My app is working but a couple of my fields are not pulling the data >>> > >> > I >>> > >> > want. >>> >>> > >> > I have a table called products and another table called colors. My >>> > >> > colors table has 2 fields, id and name. >>> >>> > >> > When adding the product, you select the color (from drop down menu) >>> > >> > and it will insert the color id into the color_id field of the >>> > >> > products table. >>> >>> > >> > Once I add a product, instead of displaying the actual color it shows >>> > >> > the colors id. (ie: 2 instead of blue) >>> >>> > >> > How do I get my page to pull the actual color name not the color id? >>> >>> > >> > When launching the page it does the following query: >>> >>> > >> > SELECT `Product`.`id`, `Product`.`name`, `Product`.`category_id`, >>> > >> > `Product`.`material_id`, `Product`.`color_id`, `Product`.`sport_id`, >>> > >> > `Product`.`price`, `Product`.`image_link`, `Product`.`buy_link`, >>> > >> > `Category`.`id`, `Category`.`name`, `Material`.`id`, >>> > >> > `Material`.`name`, `Color`.`id`, `Color`.`name`, `Sport`.`id`, >>> > >> > `Sport`.`name` FROM `products` AS `Product` LEFT JOIN `categories` AS >>> > >> > `Category` ON (`Product`.`category_id` = `Category`.`id`) LEFT JOIN >>> > >> > `materials` AS `Material` ON (`Product`.`material_id` = >>> > >> > `Material`.`id`) LEFT JOIN `colors` AS `Color` ON >>> > >> > (`Product`.`color_id` = `Color`.`id`) LEFT JOIN `sports` AS `Sport` >>> > >> > ON >>> > >> > (`Product`.`sport_id` = `Sport`.`id`) WHERE 1 = 1 LIMIT 20 >>> >>> > >> > I think I need the following part of the query to be changed from: >>> >>> > >> > `colors` AS `Color` ON (`Product`.`color_id` = `Color`.`id`) >>> >>> > >> > to >>> >>> > >> > `colors` AS `Color` ON (`Product`.`color_id` = `Color`.`name`) >>> >>> > >> > My controller is just the default one after creating through the >>> > >> > console so Products->index looks like: >>> >>> > >> > function index() { >>> > >> > $this->Product->recursive = 0; >>> > >> > $this->set('products', $this->paginate()); >>> > >> > } >>> >>> > >> > My Product model looks like: >>> >>> > >> > var $belongsTo = array( >>> > >> > 'Color' => array( >>> > >> > 'className' => 'Color', >>> > >> > 'foreignKey' => 'color_id', >>> > >> > 'conditions' => '', >>> > >> > 'fields' => '', >>> > >> > 'order' => '' >>> > >> > ) >>> > >> > ); >>> >>> > >> > My Color model looks like this: >>> >>> > >> > var $hasMany = array( >>> > >> > 'Product' => array( >>> > >> > 'className' => 'Product', >>> > >> > 'foreignKey' => 'color_id', >>> > >> > 'dependent' => false, >>> > >> > 'conditions' => '', >>> > >> > 'fields' => '', >>> > >> > 'order' => '', >>> > >> > 'limit' => '', >>> > >> > 'offset' => '', >>> > >> > 'exclusive' => '', >>> > >> > 'finderQuery' => '', >>> > >> > 'counterQuery' => '' >>> > >> > ) >>> > >> > ); >>> >>> > >> > And Products->index view looks like this: >>> >>> > >> > <tr<?php echo $class;?>> >>> > >> > <td> >>> > >> > <?php echo $product['Product']['id']; ?> >>> > >> > </td> >>> > >> > <td> >>> > >> > <?php echo $product['Product']['name']; ?> >>> > >> > </td> >>> >>> > >> > <td> >>> > >> > <?php echo $product['Product']['color_id']; ?> >>> > >> > </td> >>> >>> > >> > Your help is greatly appreciated. >>> >>> > >> > Thanks! >> >> >> > --~--~---------~--~----~------------~-------~--~----~ 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 -~----------~----~----~----~------~----~------~--~---
