Thanks for the reply.
I was actually doing your second example until i decided to build an array
manually. The reason was if i just send the entire customer info using
find('first') with no recursive, i would get all the data i needed for the
form in 1 set(). Is it good practice to send more than 1 set if it can be
avoided or it just doesnt matter?
On Wednesday, 27 August 2014 16:47:33 UTC-4, Andras Kende 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 <[email protected]
> <javascript:>> 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 [email protected] <javascript:>.
> > To post to this group, send email to [email protected]
> <javascript:>.
> > 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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/cake-php.
For more options, visit https://groups.google.com/d/optout.