Я хочу выполнить два запроса: один для подсчета всех результатов и один для получения фактических результатов 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);
}
}
Насколько я знаю, вы должны выполнить два запроса к базе данных:
Ваша проблема в том, что вы считаете, что активные записи хранят ваши результаты. Когда вы выполняете count
Datamapper вернет вам результаты запроса и будет готов к новому запросу, поэтому он не сохраняет предложение 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
Других решений пока нет …