Re: associations assoc. array keys too restricted?
Sorry for the confusing thread. I think I figured out what the communication gap is. I said key meaning PHP associative array key as in key = value, I didn't mean primary DB key. All my primary keys in the DB are called id and I've never had trouble with Cake accessing that. I resolved my problem, using something unexpected, so here is my solution. I have a model called Music to represent a CD with generic fields that also apply to other types of products, a model called MusicDetails which holds fields specific to Music, and a third model called Person, to hold (among other things), Conductors. here are the classes, with two lines marked with comments. class Music extends Item { var $name = 'Music'; var $belongsTo = array( 'Detail' = // important line #1 array('className' = 'MusicDetail', 'dependent' = true, 'foreignKey' = 'DetailRef'), ); } class MusicDetail extends AppModel { // important line #2 follows, broken if this says MusicDetail var $name = 'Detail'; var $useTable = 'tblMusic'; var $hasAndBelongsToMany = array( 'Conductors' = array('className' = 'Smn', 'joinTable' = 'joinMusicSmnConductor', 'foreignKey' = 'MusicIDref', 'associationForeignKey' = 'SmnIDref'), 'Artists' = array('className' = 'Smn', 'joinTable' = 'joinMusicSmnArtist', 'foreignKey' = 'MusicIDref', 'associationForeignKey' = 'SmnIDref'), ); } class Smn extends AppModel { var $name = 'Smn'; var $useTable = 'tblSmn'; } So what I learned is that the PHP *array key* of the $belongsTo of my Music model must agree with the var $name field of the associated model MusicDetail. The symptom you get if you do not have such agreement is not failure to link in MusicDetail, which is linked ok, but rather the failure to then go get Conductor data. I had thought the var $name was redundant and had to duplicate the class name, but I see it's more complicated than that. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Cake PHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cake-php -~--~~~~--~~--~--~---
Re: associations assoc. array keys too restricted?
In my case I had a model class MusicDetails which in turn had an association with Composers. When I had class Music extends Item { var $name = 'Music'; var $belongsTo = array( 'Details' = // not 'MusicDetails' array('className' = 'MusicDetails', 'dependent' = true, 'foreignKey' = 'DetailRef'), ); } class MusicDetails extends AppModel { var $name = 'MusicDetails'; var $useTable = 'tblMusic'; var $hasAndBelongsToMany = array( 'Conductors' = array('className' = 'Person', 'joinTable' = 'joinMusicPersonConductor', 'foreignKey' = 'MusicIDref', 'associationForeignKey' = 'PersonIDref'), } then the MusicDetails data came in fine to my view, but the Conductors data that was one association further was not found because Cake was unable to come up with an ID of the MusicDetails to which it was linked. It was querying with 'MusicIDref = NULL' instead of = 2 or whatever. Once I changed the name of the key to MusicDetails, thus duplicating the name in both places, the more-nested association started working. That seems to contradict you can call the association name whatever you want. So what am I misunderstanding? --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Cake PHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cake-php -~--~~~~--~~--~--~---
Re: associations assoc. array keys too restricted?
As I said, you can call the association whatever you want, as long as you set the approriate array keys. If your table uses a primary key other than 'id', you can set it in your model as follows: var $primaryKey = 'WhateverID'; I'm going to assume this is your problem, since it looks like you use your own key-naming convention. --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Cake PHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cake-php -~--~~~~--~~--~--~---
Re: associations assoc. array keys too restricted?
I'm saying you don't have to change your primary key's, you just need to tell Cake what they are; I understand your constraints in trying to integrate with an existing site. Cake tries to be as real-world-friendly as possible. If you post your db schema for the relevant tables, it'd be easier to help you figure out how to make this work better (or just work ;-). --~--~-~--~~~---~--~~ You received this message because you are subscribed to the Google Groups Cake PHP group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/cake-php -~--~~~~--~~--~--~---