私は2つのテーブルsermons(sermon_id,preacher_id,sermon_name etc)
とpreachers(preacher_id,firstname,lastname etc)
を持っています。今私はこれを第1説教師の名前のように表示し、その説教者のすべての説教などを正しく表示しています。しかし、説教を持って説教を表示したい...次のコードSQLクエリの問題
が使用されているが、私は唯一の第一説教を得ました。..
function viewAllpreachers($offset=0, $limit=null) {
$preacher_ids = array();
$this->db->distinct('preacher_id');
$this->db->select('preacher_id');
$this->db->from('sermons');
$query = $this->db->get();
if ($query->num_rows() > 0) {
foreach ($query->result() as $key => $res1) {
$preacher = array();
$this->db->select('*');
$this->db->from('preacher');
$this->db->where('preacher_id', $res1->preacher_id);
$this->db->order_by('first_name');
$query = $this->db->get('', $limit, $offset);
if ($query->num_rows() > 0) {
foreach ($query->result() as $row) {
$preacher[$row->preacher_id]['preacher_id'] = $row->preacher_id;
$preacher[$row->preacher_id]['preacher_name'] = $row->first_name . ' ' . $row->last_name;
$preacher[$row->preacher_id]['preacher_image'] = $row->preacher_image;
$preacher[$row->preacher_id]['preacher_bio_brief'] = $row->preacher_bio_brief;
$this->db->select('*');
$this->db->from('sermons');
$this->db->where('preacher_id', $row->preacher_id);
$this->db->order_by('sort_order ');
$sermon_array = array();
$query = $this->db->get();
if ($query->num_rows() > 0) {
foreach ($query->result() as $row1) {
$sermon_array[$row1->sermon_id] ['sermon_image'] = $row1->sermon_image;
$sermon_array[$row1->sermon_id] ['sermon_title'] = $row1->sermon_title;
$sermon_array[$row1->sermon_id] ['audio_file'] = $row1->audio_file;
$sermon_array[$row1->sermon_id] ['sermon_description'] = $row1->sermon_description;
}
}
$preacher[$row->preacher_id]['sermon'] = $sermon_array;
}
return $preacher;
}
} }
return false;
}
それは参加するシンプルなインナーの場合ではないでしょうか? – Anand
私は説教をしたすべての説教者を表示したい。説教師にセモンがない場合、彼の詳細は表示されません – Natasha
あなたのコードでは、最初の '$ preacher'がループした後に戻り、関数を出る' return $ preacher;があります。すべての説教者を別の配列に保存してから、説教者の配列を返します。 – NoLifeKing