2015-04-29 3 views
1

Я пытаюсь вернуть свою модель к двум запросам, один для самих данных, которые представляют собой несколько записей из таблицы «Категории» и поле счетчика из таблицы «Посты».CodeIgniter, как вернуть несколько запросов от модели к контроллеру?

Я пробовал много возможных решений, но пока никто не исправил это для меня.

My view работает с правильным маршрутом/форумом/$ id, но загрузка категорий и количество сообщений для каждой категории не будут работать.

Категории Контроллер:

$this->load->database(); 
$this->load->model("Categories_model"); 

$results=$this->Categories_model->getCategories(); 

$data=array('results'=>$results); 

$this->load->view('Categories_view',$results); 

Категория Модель:

// this works if I only want to get all the categories 
// $query=$this->db->get('Categories'); 
// return $query->result(); 

$query1 = $this->db->get('Categories'); 
$query2 = $this->db->query("SELECT COUNT(*) AS rowCount FROM Posts"); 

$return array('categories' => $query1, 'count' => $query2); 

Категория Вид:

<tbody> 
    <?php foreach ($results['categories'] as $r):?> 
     <tr> 
      <td><a href="<?php echo site_url('forum'); ?>/<?=$r->CategorieId?>"><?=$r->Name?></a></td> 
      <td><?=$r->rowCount?></td> 
     </tr> 
    <?php endforeach;?> 
</tbody> 

Когда я загружаю Категории просмотра, я получаю эту ошибку:

syntax error, unexpected 'array' (T_ARRAY), Filename: models/Categories_model.php

Может ли кто-нибудь помочь мне с примером кода, как это сделать, или исправить мой текущий код?

Спасибо заранее!

+0

Попробуйте использовать этот '$ Query1 = $ this-> db-> Get ('Категории') -> результат()' ' $ Query2 = $ this-> db-> запрос (" SELECT COUNT (*) AS rowCount FROM Posts ") -> result();' Также включайте полное сообщение об ошибке. и должен быть 'return' not' $ return' –

+0

Спасибо за ваш быстрый ответ, однако я не думаю, что он имеет какое-либо отношение к моим запросам, поэтому сообщение об ошибке я получаю. Я думаю, это потому, что это не массив, который я передаю в представление? – StephanB

+0

Я думаю, вам нужно '=' после '$ return' или вам может понадобиться' return' только без '$' –

ответ

2

возвращение неправильно в вашем коде удалить $ от типа вашего возвращения

$return array('categories' => $query1, 'count' => $query2); 

должно быть

return array('categories' => $query1, 'count' => $query2); 
+0

Ничего себе, что было немым от меня ха-ха! Можете ли вы взглянуть на мой код просмотра? Мне также нужно получить данные из $ results ['count'], но другой foreach не исправит проблему, потому что она должна быть напечатана в той же таблице строк. – StephanB

+0

@StephanB ваш массив данных содержит массив, поэтому вы передаете $ data в представление, а не $ result $ this-> load-> view ('Categories_view', $ data); – Saty

0
$query['categories'] = $this->db->get('Categories')->result_array(); 
$query['count'] = $this->db->query("SELECT COUNT(*) AS rowCount FROM Posts")->result(); 

return $query; 

Попробуйте это. Не сделано ничего хорошего. Просто используйте result_array() и result(). Надеюсь, они совместимы с вашей версией CI!

+0

@saty исправил (немой) проблему.Хотя я не могу понять, как получить данные из $ results ['count'] (в представлении), я думаю, что другой foreach не устранит проблему, потому что ее нужно распечатать в той же строке таблицы , – StephanB

+0

Глядя на ваш код, категории будут присутствовать в $ category и count в $ count. Вы можете сделать print_r ($ categories) или print_r ($ count) и проверить это в своем представлении !! – Arcanyx

0

транзакции:
Для запуска запросов с использованием транзакций вы будете использовать $ this-> db-> trans_start() и $ this-> db-> trans_complete() функции следующим образом:

$this->db->trans_start(); 
$this->db->query('AN SQL QUERY...'); 
$this->db->query('ANOTHER QUERY...'); 
$this->db->query('AND YET ANOTHER QUERY...'); 
$this->db->trans_complete(); 

Вы можете запускать столько запросов, сколько хотите между функциями запуска/завершения, и все они будут выполняться или откатываться на основе успеха или неудачи любого заданного запроса. Click here to see more

Смежные вопросы