Sometimes it’s very handy to be able to quickly build a string from CakePHP’s resultset array. For example you want to build a string of ID’s to be used with the “IN” condition in your DB (such as Profile.id IN(1,2,3,4)… ).
Let’s say we did a find(‘all’… and got an array similar to this one:
Array ( [0] => Array ( [Account] => Array ( [id] => 23 ) ) [1] => Array ( [Account] => Array ( [id] => 24 ) ) [2] => Array ( [Account] => Array ( [id] => 25 ) ) )
Our goal is to extract the ID’s from the above array into 23,24,25.
Here we go (assuming that $acctIds is our resultset array from above):
$stringOfIds = implode(',', Set::extract($acctIds, '{n}.Account.id'));
Cake’s Set class is full of magic and here we are using the extract method to get just the values we are interested in, then we implode the resulting array with a comma.
Note the {n} above. It simply represents a numeric key and therefore allows us to easily follow the path to the desired value in the array.