Wait a sec. I just looked closer at your models (yes, I've only just started my coffee, again). There are legitimate reasons for having more than one model in $uses but you shouldn't need to have State in there in this case.
var $uses = array('Store'); ... $states = $this->Store->State->find('list'); And if the code was within the Store *model* you'd do $states = $this->State->find('list'); ($this being the Store model) On Sun, May 3, 2009 at 12:10 PM, brian <bally.z...@gmail.com> wrote: > var $uses = array('Store', State'); > > If you add a 2nd model you have to include both of them in $uses. If > the variable is present, Cake will not bother figuring it out for you. > Thus, Store is not found. > > Incidentally, I changed States to State. The model name should > generally be singular. > > On Sun, May 3, 2009 at 12:01 PM, PCH <philip.hew...@gmail.com> wrote: >> >> I'm having problems with this solution. >> I've got my child model - state.php >> class State extends AppModel { >> var $name = 'State'; >> var $hasMany = array('Store' => array('className' => 'Store', >> 'foreignKey' => 'store_id')); >> } >> >> I've got my parent model - store.php >> class Store extends AppModel { >> >> var $name = 'Store'; >> var $validate = array('store' => array('rule' => VALID_NOT_EMPTY, >> 'message' => 'Store name cannot be empty')); >> var $belongsTo = array('State' => array('className' => 'State', >> 'foreignKey' => 'state_id')); >> >> } >> >> And I've got my parent controller - stores_controller.php >> class StoresController extends AppController { >> var $name = 'Stores'; >> var $uses = array('States'); >> >> function index() { >> $this->set('stores', $this->Store->find('all')); >> $this->pageTitle = 'Stores'; >> } >> >> function add() { >> $this->pageTitle = 'Add a new Store'; >> >> if (!empty($this->data)) { >> $this->Store->create(); >> if ($this->Store->save($this->data)) { >> $this->Session->setFlash(__('The Store has >> been saved')); >> $this->redirect(array('action' => 'index')); >> } else { >> $this->Session->setFlash(__('Store not saved. >> Try again.', true)); >> } >> } >> $states = $this->State->find('list'); >> $this->set(compact('states', $states)); >> } >> >> function edit($id = null) { >> } >> >> function delete($id = null) { >> } >> } >> >> I get the following error when I invoke the index function >> Notice (8): Undefined property: StoresController::$Store [APP >> \controllers\stores_controller.php, line 7] >> >> Fatal error: Call to a member function find() on a non-object in S: >> \wwwserver\mypricebook\app\controllers\stores_controller.php on line >> >> The line 7 code is: >> $this->set('stores', $this->Store->find('all')); >> >> Any ideas what I'm missing or doing wrong? >> >> Thanks >> Phil - super CakePHP noob >> >> >> On May 2, 11:06 pm, brian <bally.z...@gmail.com> wrote: >>> Try this: >>> $allies = $this->Ally->find( 'all' ); >>> >>> On Sat, May 2, 2009 at 10:31 PM, craig.kaminsky >>> >>> <craig.kamin...@gmail.com> wrote: >>> >>> > Hi, >>> >>> > I'm a CakePHP noob who is converting a site from Fusebox/ColdFusion to >>> > CakePHP (1.2.x). Without boring anyone with the domain details, I want >>> > to output a list of 'allies' and their associated organizations >>> > (belongs to an organization in the model). The problem I am running >>> > into is that I cannot get CakePHP to recognize the relationship >>> > between Allies and Organizations from a "third-party" controller (the >>> > "HomeController"). >>> >>> > Here's my setup: >>> >>> > MODEL: >>> > FILENAME: ally.php >>> > class Ally extends AppModel { >>> >>> > var $name = 'Ally'; >>> >>> > //The Associations below have been created with all possible keys, >>> > those that are not needed can be removed >>> > var $belongsTo = array( >>> > 'Organization' => array( >>> > 'className' => 'Organization', >>> > 'dependent' => true, >>> > 'foreignKey' => 'organization_id' >>> > ) >>> > ); >>> > } >>> >>> > FILENAME: organization.php >>> > class Organization extends AppModel { >>> >>> > var $name = 'Organization'; >>> > var $displayName = 'name'; >>> >>> > //The Associations below have been created with all possible keys, >>> > those that are not needed can be removed >>> > var $belongsTo = array( >>> > 'OrganizationType' => array( >>> > 'className' => 'OrganizationType', >>> > 'foreignKey' => 'organization_type_id' >>> > ) >>> > ); >>> >>> > var $hasMany = array( >>> > 'Ally' => array( >>> > 'className' => 'Ally', >>> > 'foreignKey' => 'organization_id' >>> > ) >>> > ); >>> >>> > } >>> >>> > CONTROLLER: >>> > FILENAME: home_controller.php >>> > class HomeController extends AppController >>> > { >>> > var $name = 'Home'; >>> > var $uses = array( 'Allies'); >>> >>> > function index() >>> > { >>> > $allies = $this->Allies->find( 'all' ); >>> > $this->set( 'allies', $allies ); >>> > } >>> >>> > } >>> >>> > DB: >>> > The tables (allies and organizations) are plural and both have a >>> > primary key named 'id". The allies table has a column called >>> > 'organization_id' to act as a foreign key (MySQL 5 DB). >>> >>> > RESULTING SQL IN DEBUG OUTPUT: >>> > SELECT `Allies`.`id`, `Allies`.`organization_id`, `Allies`.`sfa_href`, >>> > `Allies`.`logo`, `Allies`.`overview`, `Allies`.`active` FROM `allies` >>> > AS `Allies` WHERE 1 = 1 >>> >>> > Why wouldn't this setup/configuration result in the allies select >>> > trying to join the organizations table from the home controller? >>> >>> > It does work properly when I set it up from the Allies controller in >>> > that I see both Ally data and Organization data. I'm just a little >>> > stumped as to how to make this work from the HomeController. >>> >>> > Any help or guidance would be much appreciated. >>> >>> > Thanks! >>> > Craig >> >> >> >> > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "CakePHP" group. To post to this group, send email to cake-php@googlegroups.com To unsubscribe from this group, send email to cake-php+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/cake-php?hl=en -~----------~----~----~----~------~----~------~--~---