Well, it sounds good but, I always try to follow the K.I.S.S. method:
Keep It Simple Stupid.

I think the point now is not whether it is the "right way" or "wrong
way" but, rather, why is it not working...  if you or we can figure
this out and post our findings, I think we would both be better coders
for it.

Give me an example row from each database and I will test out your
code at work tomorrow.

One thing I did notice about your hasMany array:

from the example, this code:

<?php
class User extends AppModel
{
    var $name = 'User';
    var $hasOne = array('Profile' =>
                        array('className'    => 'Profile',
                              'conditions'   => '',
                              'order'        => '',
                              'dependent'    =>  true,
                              'foreignKey'   => 'user_id'
                        )
                  );
}
?>

Outputs an array like:

Array
(
    [User] => Array
        (
            [id] => 25
            [first_name] => John
            [last_name] => Anderson
            [username] => psychic
            [password] => c4k3roxx
        )

    [Profile] => Array
        (
            [id] => 4
            [name] => Cool Blue
            [header_color] => aquamarine
            [user_id] = 25
        )

Notice the foreign key.  Let's say that user = registered_state and
profile = state.  Profile has a column with user_id.  You are using
state_id as your foreignKey yet, your table for state does not have a
state_id... just an id.  Try changing that foreign key for me to
either blank or just id.
)

--Chris

On Feb 11, 5:28 pm, "Erich C. Beyrent" <[EMAIL PROTECTED]>
wrote:
> I had added the belongsTo association to the states table, and that
> didn't make a difference - I got the same results.
>
> Here's what I am trying to accomplish - visitors to the website must
> select their state of residency to continue, and that state needs to be
> validated against a list of registered states.
>
> In my current schema, I can accomplish the results I am looking for with
> this query:
>
> select code from states right join registered_states on
> registered_states.state_id = states.id
>
> This would give me a list like NH, MA, CT, RI, VT.
>
> I am looking for a way to do this through model associations and the
> findAll method.
>
> I know that I could also accomplish this by adding an isRegistered field
> to the states table with a value of 1 or 0, and then query on that.
> Perhaps that is simply the easiest solution.
>
> Like I said, I know that I can use a custom query, but that seems
> hackish when considering the capabilities of Cake.
>
> Any ideas?
>
> -Erich-
>
> Christopher E. Franklin, Sr. wrote:
>
> > If I am not mistaken, I believe the State model has to have an
> > association with RegisteredState model as well to get that backwards
> > compatibility.  Take a look at the user and profile models in this
> > example.
>
> >http://manual.cakephp.org/chapter/models
>
> > If you notice, User hasOne Profile while Profile belongsTo User.
> > There is a definition in both models to get the expected return and
> > association.
>
> > I don't know exactly what you are trying to accomplish but, if you do
> > a hasAndBelongsToMany, don't forget to make the Join table with the
> > name registered_states_states and just have two columns, one with
> > registered_state_id and the other with state_id.
>
> > Tell me if this helps you any or, you can post back with what exactly
> > you are trying to do and how you envision the relationship between
> > state and registered_state.  Are they sort of "tags" as in State:
> > Open, Closed? or Something else?
>
> > In all, the only problem I can see right now with your code is you do
> > not have the backwards association in the State model.  Try belongsTo.
>
> > On Feb 11, 10:21 am, "Erich C. Beyrent" <[EMAIL PROTECTED]>
> > wrote:
> >> Here are my tables:
>
> >> CREATE TABLE `registered_states` (
> >>    `state_id` int(11) NOT NULL default '0',
> >>    PRIMARY KEY  (`state_id`)
> >> ) ENGINE=MyISAM DEFAULT CHARSET=latin1
>
> >> CREATE TABLE `states` (
> >>    `id` int(11) NOT NULL auto_increment,
> >>    `name` varchar(24) NOT NULL default '',
> >>    `code` char(2) NOT NULL default '',
> >>    PRIMARY KEY  (`id`)
> >> ) ENGINE=MyISAM DEFAULT CHARSET=latin1
>
> >> Models:
>
> >> // registered_state.php
> >> class RegisteredState extends AppModel
> >> {
> >>     var $name = 'RegisteredState';
>
> >>         var $hasMany = array('State' =>
> >>                           array('className'     => 'State',
> >>                                 'conditions'    => '',
> >>                                 'order'         => '',
> >>                                 'limit'         => '',
> >>                                 'foreignKey'    => 'state_id',
> >>                                 'dependent'     => false,
> >>                                 'exclusive'     => false,
> >>                                 'finderQuery'   => ''
> >>                           )
> >>                    );
>
> >> }
>
> >> // state.php
> >> class State extends AppModel
> >> {
> >>      var $name = 'State';
> >>      var $validates = array('code' => VALID_NOT_EMPTY);
>
> >> }
>
> >> -Erich-
>
> >> Christopher E. Franklin, Sr. wrote:
>
> >>> Post your model code with the names of the files and where they are
> >>> located.
> >>> On Feb 10, 6:12 pm, "Erich C. Beyrent" <[EMAIL PROTECTED]>
> >>> wrote:
> >>>> That did not work - now I get:
> >>>> Array
> >>>> (
> >>>>      [0] => Array
> >>>>          (
> >>>>              [RegisteredState] => Array
> >>>>                  (
> >>>>                      [state_id] => 10
> >>>>                  )
> >>>>              [State] => Array
> >>>>                  (
> >>>>                  )
> >>>>          )
> >>>> )
> >>>> I know I can write my own custom query for this, but I am unsure as to
> >>>> why this isn't working for me.
> >>>> -Erich-
> >>>> djiize wrote:
> >>>>> in registered_states table, try state_id (not plural)
> >>>>> On 9 fév, 19:10, "Erich C. Beyrent" <[EMAIL PROTECTED]> wrote:
> >>>>>> I am trying to link two tables, states and registered_states.
> >>>>>> The states table has id, name, and code as fields, and 
> >>>>>> registered_states
> >>>>>> has states_id.
> >>>>>> I defined as hasMany association in the registered_states model, and 
> >>>>>> now
> >>>>>> want to produce a list of all the registered states and their 
> >>>>>> associated
> >>>>>> state.
> >>>>>> I'm getting the list of registered states, but no state data:
> >>>>>> Array
> >>>>>> (
> >>>>>>      [0] => Array
> >>>>>>          (
> >>>>>>              [RegisteredState] => Array
> >>>>>>                  (
> >>>>>>                      [states_id] => 10
> >>>>>>                  )
> >>>>>>              [State] => Array
> >>>>>>                  (
> >>>>>>                  )
> >>>>>>          )
> >>>>>> )
> >>>>>> What I'm particularly interested in retrieving is the state code for
> >>>>>> each registered state.
> >>>>>> How can I accomplish this?
> >>>>>> -Erich-


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake 
PHP" 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