Выполнение двух запросов с Datamapper в Codeigniter

Я хочу выполнить два запроса: один для подсчета всех результатов и один для получения фактических результатов 9 на 9. Моя проблема в том, когда я пытаюсь получить счетчик результатов: второй запрос получает все 9 строк из базы данных. без WHERE пункт.

$courses = $this->load->model("course")->where("deleted",0);
$courses->where("country",strtolower($country));
$courses->count(); // returns 15
$courses->offset(($per_page)*9)->limit(9);
$courses->get(); // returns 9 rows from all database (like select * from courses limit 9) without where country=france

Моя проблема в том, что я хочу посчитать все результаты, но я хочу получить только 9 результатов для целей нумерации страниц

Помощь, необходимая для начинающего пользователя codeigniter

class Course extends DataMapper {

var $table = 'course';

var $error_prefix = '<li>';

var $error_suffix = '</li>';

function __construct($id = NULL) {
parent::__construct($id);
}

}

1

Решение

Насколько я знаю, вы должны выполнить два запроса к базе данных:

  • Один для подсчета.
  • Один для получения результатов, которые вы хотите.

Ваша проблема в том, что вы считаете, что активные записи хранят ваши результаты. Когда вы выполняете countDatamapper вернет вам результаты запроса и будет готов к новому запросу, поэтому он не сохраняет предложение where.

Попробуйте сделать это в два этапа. Для подсчета:

$courses = $this->load->model("course")->where("deleted",0);
$courses->where("country",strtolower($country));
$counting = $courses->count(); // returns 15

Для получения результатов:

$courses = $this->load->model("course")->where("deleted",0);
$courses->where("country",strtolower($country));
$courses->offset(($per_page)*9)->limit(9);
$results = $courses->get(); // returns 9 rows from all database (like select * from courses limit 9) without where country=france
1

Другие решения

Других решений пока нет …