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.

Reply via email to