У меня есть страница на моем сайте, которая распечатывает все имена и идентификаторы клиентов в базе данных для использования в отчете другой базе данных о проделанной работе.
Я хотел бы сделать для этой функциисортировать клиентов так, чтобы я отсортировал этот список в порядке, когда последний раз клиент использовался в отчете.Если в последнем отчете будет указано, что клиент попадает на первое место в моем клиенте.
Я использую Codeigniter, и у моего контроллера есть этот код:
$data['reports'] = $this->db->get('reports');
$data['customers'] = $this->db->get('customers');
$this->load->view('list', $data);
Это добавляется на мой взгляд:
foreach($customers->result() as $customer){
echo "<option value='".$customer->id."'>".$customer->name."</option>";
}
Я добавил картинку, которая, надеюсь, облегчает понимание.
ОБНОВЛЕНИЕ № 1:
Итак, я с помощью приведенных ниже комментариев сработал так:
Контроллер:
$this->db->group_by('customer');
$this->db->order_by('date', DESC);
$data['reports'] = $this->db->get('reports');
$data['customers'] = $this->db->get('customers');
$this->load->view('list', $data);
Просмотр:
foreach($reports->result() as $rep){
foreach($customers->result() as $customer){
if($rep->customer == $customer->id){
echo "<option value='".$customer->id."'>".$customer->name."</option>";
}
}
}
Это дает мне ответ клиентаодин раз в порядке даты отчета.
ОДНАКО!Это не работает, как я намеревался.Потому что, да, он сортирует по порядку даты, но сначала группирует отчеты, поэтому он берет дату, которая наступает последней и присутствует в эхо.Это будет первая дата, когда-либо записанная для этого клиента.Противоположность того, что я хотел.
Я не нашел способа изменить порядок обработки, сгруппированный по.Если это даже возможно ..
Также он не принимает ни одного клиента, у которого нет отчета.