get customized array format in cakephp - cakephp-2.0

I have table name with TEST
id name_id name
1 11 one
2 11 two
3 12 three
4 12 four
5 13 five
i need out put like follows with single query without foreach loop.
array(
[11] => Array
(
[TEST] => Array
(
[name] => one
)
)
[11] => Array
(
[TEST] => Array
(
[name] => two
)
)
[12] => Array
(
[TEST] => Array
(
[name] => three
)
)
[12] => Array
(
[TEST] => Array
(
[name] => four
)
)
[13] => Array
(
[TEST] => Array
(
[name] => five
)
));

You can try putting the id with set::combine.
$data = set::combine(
$this->TEST->find('all', array('fields' => array('name'))),
'{n}.TEST.id',
'{n}.TEST'
);

Related

Not able to access data from array retrieved in controller to display in view files

In my cakephp Controller when I retrieve my data by find clause I get this array
Array
(
[0] => Array
(
[Category] => Array
(
[id] => 1
[Category-name] => Arts
)
[Course] => Array
(
[0] => Array
(
[id] => 1
[category_id] => 1
[degree] => UG
[course-name] => BSc-Maths
)
[1] => Array
(
[id] => 5
[category_id] => 1
[degree] => PG
[course-name] => MSc Math
)
[2] => Array
(
[id] => 6
[category_id] => 1
[degree] => UG
[course-name] => Bsc Stats
)
[3] => Array
(
[id] => 7
[category_id] => 1
[degree] => PG
[course-name] => Msc-Stats
)
)
)
[1] => Array
(
[Category] => Array
(
[id] => 2
[Category-name] => Science and technology
)
[Course] => Array
(
[0] => Array
(
[id] => 2
[category_id] => 2
[degree] => UG
[course-name] => BSc-CS
)
)
)
[2] => Array
(
[Category] => Array
(
[id] => 3
[Category-name] => Commerce
)
[Course] => Array
(
[0] => Array
(
[id] => 3
[category_id] => 3
[degree] => PG
[course-name] => Msc-Finance
)
)
)
[3] => Array
(
[Category] => Array
(
[id] => 4
[Category-name] => Law
)
)
)
I want to show All Courses for a particular Category in ctp file as in form. As For Category Arts there are 4 Courses.
I want to display these 4 Courses for Arts Category.
I am able to Display Categories using the same array.
But not able to display Courses using same array in y ctp file as dropdown in a form.
Is there a way to Access this Courses data? Or Do I have to use different query for to access Courses??
Please I need your help with this.
Thanks in advance.
I would solve it like this:
An improved retrieving Query which only outputs the course names.
$cats = $this->Category->find('all',array(
'conditions'=>array('Category.Category-name'=>'Arts')
'recursive'=>1,
'contain'=>array('Course'),
'fields'=>'Course.course-name'))[0]['Course'];
Now the $cats variable should contain an array with 4 entries which can be used in a dropdown select

Group a multidimensional array by a particular value

I have a multidimensional array and am trying to group them according to the value of array properties.
I'm trying to group them by id, but I won't actually know the id beforehand. So, it's not like I can put it in a for loop and say while i < 7, because I won't know that 7 is the maximum value for the id value,
Array (
[0] => Array (
[name] => R8900
[type] => public
[id] => 1
)
[1] => Array (
[name] => R8944
[type] => public
[id] => 1
)
[2] => Array (
[name] => R8922
[type] => private
[id] => 3
)
[3] => Array (
[name] => R8816
[type] => private
[id] => 3
)
[4] => Array (
[name] => R7434
[type] => VIP
[id] => 7
)
)
What I'm hoping to produce:
Array (
[1] => Array (
[0] => Array (
[name] => R8900
[type] => public
)
[1] => Array (
[name] => R8944
[type] => public
)
)
[3] => Array (
[2] => Array (
[name] => R8922
[type] => private
)
[3] => Array (
[name] => R8816
[type] => private
)
)
[7] => Array (
[4] => Array (
[name] => R7434
[type] => VIP
)
)
)
Something as simple as:
var result:Object = {};
for each(var i:Object in input)
{
if(!result.hasOwnProperty(i.id))
{
result[i.id] = [];
}
result[i.id].push(i);
delete i.id;
}

cakephp multiple records data array fit in request data

I need to get multiple records from model, then put them into request->data for a view to render into a form with multiple input fieldsets for example name='data[Applicant][0][display_name]'. name='data[Applicant][1][display_name]'...data value goes in for each applicant.
Actually I've already done what i want, but i do not think it is a good method to do so.
Appreciate if anyone can guide me
foreach ($this->Applicant->data['Applicant'] as $key=>$item){
$data['Applicant'][] = $item['Applicant'];
}
$this->request->data = $data;//set Model to data
$this->set('data' , $this->Applicant->data);
$this->Applicant->data is the following:
Array
(
[Applicant] => Array
(
[0] => Array
(
[Applicant] => Array
(
[id] => 1
[application_id] => 17
[name] => User
[first_name] =>
...
)
)
[1] => Array
(
[Applicant] => Array
(
[id] => 3
[application_id] => 17
[name] =>
[first_name] =>
the following is the desired output (less one level):
Array
(
[Applicant] => Array
(
[0] => Array
(
[id] => 1
[application_id] => 17
[name] => User
[first_name] =>
...
)
[1] => Array
(
[id] => 3
[application_id] => 17
[name] =>
[first_name] =>
thanks
This should suffice:
$this->request->data['Applicant'] = Hash::extract( $this->Applicant->data, 'Applicant.{n}.Applicant' );

CakePHP find screwed up

I have a simple database table which looks like this: http://www.xup.in/dl,17431410/screwed.jpg/ Now I want the data using $this->find('all') in the ItemModel which looks like:
public function getList() {
$data = $this->find('all');
pr($data);
exit;
}
The output is
Array
(
[0] => Array
(
[Champion] => Array
(
[id] => 1
[name] => A
[key] => ahri
)
)
[1] => Array
(
[Champion] => Array
(
[id] => 2
[name] => A
[key] => akali
)
)
[2] => Array
(
[Champion] => Array
(
[id] => 3
[name] => A
[key] => alistar
)
)
[3] => Array
(
[Champion] => Array
(
[id] => 4
[name] => A
[key] => amumu
)
)
)
I have absolutely no idea why the name is cut at the first letter.
schema looks good to me.
did you clear the cache? the old scheme that is cached in /tmp/cache/persistent might still have something else stored.
maybe a tinyint, or char 1 etc.

find value in array cakephp

Hey guys I am trying to get a value from an array in my events_controller.php file.
Event belongsTo Entity and Entity hasMany Event. I need this value to perform some other logic but im really stuck and i know it should be an easy thing to do.
I am trying to get the value of Entity.user_id from this array.
Array
(
[Event] => Array
(
[id] => 19
[entity_id] => 8
[name] => new event
[time_start] => 2011-02-26 19:09:00
[time_end] => 2011-02-26 19:09:00
[dateStart] => 0000-00-00
[dateEnd] => 0000-00-00
[description] => jgiuguygo
[ageRange] => 67
)
[Entity] => Array
(
[id] => 8
[user_id] => 14
[location_id] => 15
[type] => EVENT
)
[Eventfeedback] => Array
(
)
)
the above matrix i obtained with this code:
$value = $this->Event->read();
pr($value);
Now this is as close as I can get...
Array
(
[Entity] => Array
(
[user_id] => 14
)
[Event] => Array
(
[id] => 19
)
[Eventfeedback] => Array
(
)
)
with this code
$value = $this->Event->read('Entity.user_id');
pr($value);
An last try i got this array
Array
(
[Entity] => Array
(
[id] => 1
[user_id] => 11
[location_id] => 8
[type] => sdfsdfdsf
)
[User] => Array
(
[id] => 11
[firstName] => luis
[lastName] => pooya
[username] => admin
[password] => 94c882c8506497a9f031ca5a4db6d0143c97fe45
[role] => admin
[email] => some
)
[Location] => Array
(
[id] => 8
[name] => First Nation University of Canada
[xCoordinate] => 0
[yCoordinate] => 0
)
[Establishment] => Array
(
)
[Event] => Array
(
)
[Vmachine] => Array
(
)
)
with this code
$value = $this->Event->Entity->find('user_id');
pr($value);
Hope someone can help me out. Thanks in advance.Luis
I'm not sure I understood you correctly. But to get user_id in your examples would be like
$value = $this->Event->read('Entity.user_id');
pr($value['Entity']['user_id']);
$event = $this->Event->read();
$userId = $event['Entity']['user_id'];

Resources