У меня есть вопрос
Допустим, у нас есть эти 2 таблицы в нашей базе данных
первая таблица: category_lists
вторая таблица: data_category
поэтому если list_data_id равен 1 означает, что у него есть 2 данные, если вы посмотрите на таблица data_category, который равен 6 и 7.
Теперь я хочу сделать запрос из таблица category_list, чтобы 6 и 7 отображали Автоэвакуаторы и Наличные за автомобили.
Вот как выглядит мой код:
ниже мой контроллер:
public function index($listing_name)
{
$this->load->view('layouts/head_layout_seo');
$this->load->view('layouts/head_layout');
$data['main_view'] = 'listings/main_view';
$data['listing_data'] = $this->Listing_model->get_detail_listing($listing_name);
$list_id = $data['listing_data']->list_data_id; // this is what I get list_data_id is equal to 1
$data['category_ads'] = $this->Ads_model->get_ads($list_id); // this is what you need to look
$this->load->view('layouts/main', $data);
$this->load->view('layouts/footer_layout');
}
ниже моя модель:
public function get_ads($list_id)
{
$this->db->where('list_data_id', $list_id);
$query = $this->db->get('data_category');
$query = $query->result();
//return $query;
if (count($query) > 0) {
for ($i=0; $i < count($query); $i++) {
foreach ($query as $value) {
$this->db->where('category_lists_id', $value->category_lists_id);
$querys = $this->db->get('category_lists');
//print_r($query);
return $querys->result();
}
}
}
}
ниже мой взгляд:
foreach ($category_ads as $value) {
<p><a href = ""><?php echo $value->categories; ?></a></p> }
с приведенным выше кодом я получаю только 1 данные, который является Автоэвакуаторы, как вы можете видеть из таблицы, он должен показывать 2 данныеАвтоэвакуаторы и Наличные за автомобили
Кто-нибудь может мне с этим помочь?
Спасибо
Также у вас есть вложенный цикл, который будет печатать результат несколько раз, если в таблице data_category более 1 результата.
почему бы вам не использовать join в запросе модели?
$запрос = $запрос->result_array();
@catcon, если я помещу строку return $querys->result(); после закрывающей скобки цикла foreach я получу Cash For Cars, а не Car Wreckers.
@MohitKumar Я пробовал, не помогает, показывает только 1 результат
@ М.Хемант, можешь объяснить, как это сделать?






Попробуйте это в своей модели, так что не нужно вызывать DB два раза и не нужно loop
public function get_ads($list_id)
{
$this->db->select('cl.category_lists_id,cl.categories');
$this->db->from('category_lists cl');
$this->db->join('data_category dc','cl.category_lists_id = dc.category_lists_id');
$this->db->where('dc.list_data_id',$list_id);
$query = $this->db->get();
if ($query->num_rows() > 0){
return $query->result();
}else{
return array();
}
}
Большое спасибо, я искал этот ответ последние 2 дня
Я не знаком с Codeigniter, но, глядя на вашу логику, ваш цикл foreach проходит только через первый элемент, после которого вы возвращаете значение, он никогда не достигает конца массива.