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.

Reply via email to