I have database table named SubjectTutor
and Topic
. I want to display topic list that has same school_id
and subject_id
. subject_id
decoded from json. but i dont have school_id
, so i want to take school_id
from SubjectTutor
table
I succeeded get school_id
but still in array:
$school_id = array(
(int) 0 => array(
'SubjectTutor' => array(
'school_id' => '452'
)
),
(int) 1 => array(
'SubjectTutor' => array(
'school_id' => '453'
)
),
(int) 2 => array(
'SubjectTutor' => array(
'school_id' => '454'
)
),
(int) 3 => array(
'SubjectTutor' => array(
'school_id' => '67'
)
)
)
The problem is : Undefined index: SubjectTutor on Line 4953
this is the WebServicesController.php:
$school_id = $this->SubjectTutor->find('all',array('fields'=>array('school_id'),'conditions'=>array('SubjectTutor.tutor_id'=>$tutor_id)));
//print_r($school_id);
$all_topics = $this->Topic->find('all',array('conditions'=>array('Topic.subject_id'=>$decoded['subject_id'],'Topic.school_id ='=>$school_id['SubjectTutor']['school_id']),'order'=>'Topic.name ASC'/* ,'limit'=>$limit,'offset'=>$offset */)); //this is line 4953
aavrug
April 28, 2017, 4:17am
2
Which version of CakePHP are you using?
i have solved the problem by using foreach.
$school_id = $this->SubjectTutor->find('all',array('fields'=>array('school_id'),'conditions'=>array('SubjectTutor.tutor_id'=>$tutor_id)));
foreach ($school_id as $key)
{
//print_r($value);
$all_topics = $this->Topic->find('all',array('conditions'=>array('Topic.subject_id'=>$decoded['subject_id'],'Topic.school_id'=>$key['SubjectTutor']['school_id']),'order'=>'Topic.name ASC'/* ,'limit'=>$limit,'offset'=>$offset */));
//print_r($key['SubjectTutor']['school_id']);
}
but the new problem is: there is no topic displayed (but i already have at least one). please help
You should extract array $school_id to get a array only store school_id.
and then you can use array school_id for conditions in fetch data.
<?php
$school_id = array(
(int) 0 => array(
'SubjectTutor' => array(
'school_id' => '452'
)
),
(int) 1 => array(
'SubjectTutor' => array(
'school_id' => '453'
)
),
(int) 2 => array(
'SubjectTutor' => array(
'school_id' => '454'
)
),
(int) 3 => array(
'SubjectTutor' => array(
'school_id' => '67'
)
)
);
$schools = [];
foreach($school_id as $value){
array_push($schools, $value['SubjectTutor']);
}
$result = [];
foreach($schools as $value){
array_push($result, $value['school_id']);
}
var_dump($result); // now you can use it for find.
Rao Vặt Nghệ An & Hà Tĩnh: Đăng tin mua bán, tuyển dụng, việc làm, bất động sản - Sàn TMĐT TPVinh.vn
Hi thanks for your help. i have tried but it stil not working. please help
foreach($school_id as $value){
array_push($schools, $value['SubjectTutor']);
}
$result = [];
foreach($schools as $value){
array_push($result, $value['school_id']);
}
//var_dump($result);
$all_topics = $this->Topic->find('all',array('conditions'=>array('Topic.subject_id'=>$decoded['subject_id'],'Topic.school_id' => $result),'order'=>'Topic.name ASC'/* ,'limit'=>$limit,'offset'=>$offset */));