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

Reply via email to