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].
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.