Try something like $this->set('customer info',$this->Customer->find('first',array('recursive' => -1, 'conditions' => array('id'=>$customerId)))); adding 'recursive' => -1 will only get the customer data..
to get e select list for a customer devices $this->set('customer info',$this->Customer->Device->find('list',array('conditions' => array('customer_id'=>$customerId)))); http://book.cakephp.org/2.0/en/models/retrieving-your-data.html Andras Kende On Aug 27, 2014, at 12:25 PM, Tristan Plumley <plumleytris...@gmail.com> wrote: > Hello, I'm fairly new to cakephp and have a few pretty basic questions about > fetching data from arrays: > > here is what i have set up > > Models: > > class Customer extends AppModel { > > > public $hasMany = array('Device','Change'); > > } > > class Device extends AppModel { > > > public $belongsTo = 'Customer'; > } > > > class Change extends AppModel { > > > public $belongsTo = 'Customer'; > } > > > now anytime I > $this->set('customerinfo',$this->Customer->find('first',array('conditions' => > array('id'=>$customerId)))); > > or find('all'), i get everything on that customer, including all devices and > all thousands of changes. > > One of my questions is how should i manage that relationship since i dont > want to pull that much change data just to get a customer ID, name and > address? > > Have I built my model relationships too simple to allow for me for limiting > what is being sent? > > > question #2 > > doing the above statement, i get the following returned: > > > array( > 'Customer' => array( > 'id' => '33', > 'name' => 'customer#33', > 'totchngavail' => '5', > 'totalchanges' => '0' > ), > 'Device' => array( > (int) 0 => array( > 'id' => '6', > 'customer_id' => '33', > 'name' => 'device4', > 'type' => 'server', > 'os' => 'aix', > 'ip' => '123.123.123.123' > ), > (int) 1 => array( > 'id' => '31', > 'customer_id' => '33', > 'name' => 'dev2', > 'type' => 'server', > 'os' => 'linux', > 'ip' => '123.123.123.123' > ) > ), > 'Change' => array( > (int) 0 => array( > 'id' => '2', > 'customer_id' => '33', > 'name' => 'change12', > 'number' => '1234567890' > ), > (int) 1 => array( > 'id' => '4', > 'customer_id' => '33', > 'name' => 'change14', > 'number' => '1234567890' > ) > > ///many many more changes > ) > ) > > > > When i try and retrieve all the devices for that customer in a select box for > example i try with: > > echo $this->Form->input('device_id',array('label'=> 'Device Name','style' => > 'width: 150px;','type' => 'select', > 'options' => displayDevices($customerinfo))); > > and here is the displayDevices function: > > function displayDevices($customerinfo){ > //a list 'header' so no device is selected by default > $var =array(NULL=>'---'); > foreach($customerinfo['Device'] as $device) > { > $var+=array($device['id']=>$device['name']); > } > return $var; > }; > > > So my question is: shouldnt there be a better way of displaying that select > list? maybe by some form of $customerinfo['Device']['name'] right into the > form input? When i do this i get an index error. I dont see how i should have > to manually build an array to populate the select list when the complete > customer array with devices comes in from the controller. > > > thanks in advance for your advice. > > > -- > Like Us on FaceBook https://www.facebook.com/CakePHP > Find us on Twitter http://twitter.com/CakePHP > > --- > You received this message because you are subscribed to the Google Groups > "CakePHP" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to cake-php+unsubscr...@googlegroups.com. > To post to this group, send email to cake-php@googlegroups.com. > Visit this group at http://groups.google.com/group/cake-php. > For more options, visit https://groups.google.com/d/optout. -- Like Us on FaceBook https://www.facebook.com/CakePHP Find us on Twitter http://twitter.com/CakePHP --- You received this message because you are subscribed to the Google Groups "CakePHP" group. To unsubscribe from this group and stop receiving emails from it, send an email to cake-php+unsubscr...@googlegroups.com. To post to this group, send email to cake-php@googlegroups.com. Visit this group at http://groups.google.com/group/cake-php. For more options, visit https://groups.google.com/d/optout.