'options' => $devices, sorry.
On 28 August 2014 07:07, Stephen S <hellospeak...@gmail.com> wrote: > I would recommend changing recursive to -1 in the AppModel and using > Containable, this way the only data you receive is the data you actually > request and could possibly help your application in terms of speed by > switching this off. > http://book.cakephp.org/2.0/en/core-libraries/behaviors/containable.html > > To populate a select box you can just do something like the following in > your controller: > $this->set('devices', $this->Customer->Device->find('list')); If you name > devices appropriately it will automatically populate the select box, > otherwise you must specify like such: > > echo $this->Form->input('device_id', array('options' => 'devices', 'empty' > => '-----')); > > Using device_id in the input and devices as the variable name should auto > populate the input field, you can also pass empty to create a blank option > first, and also you don't normally need to specify the input as select. > > > On 27 August 2014 21:47, Andras Kende <and...@gmail.com> wrote: > >> 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. >> > > > > -- > Kind Regards > Stephen Speakman > -- Kind Regards Stephen Speakman -- 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.