2014-02-13 6 views
1

Я использую activerecord в codeigniter. У меня есть БД, который выглядит следующим образом:Группировка в activerecord codeigniter

+------------+--------------|----------+ 
|clientName | websiteNumber|langNumber| 
|------------|--------------|----------| 
|john  | 1   | 2,5  | 
|john  | 2   | 2,3  | 
|mark  | 1   | 15,5  | 
|steve  | 1   | 5  | 
|steve  | 2   | 5  | 
|amy   | 1   | 15  | 
+------------+--------------+----------+ 

Я хочу группе CLIENTNAME, затем websiteNumber, так что вид выглядит примерно так:

john 
    websiteNumber 1 langNumber 2,5 
    websiteNumber 2 langNumber 2,3 
    mark 
    websiteNumber 1 langNumber 15,5 
    steve 
    websiteNumber 1 langNumber 5 
    websiteNumber 2 langNumber 5 
    amy 
    websiteNumber 1 langNumber 15 

Я не беспокоюсь HTML или как анализировать результат. Я хочу знать, как лучше использовать один запрос, используя активную запись, чтобы он возвращал массив, который затем можно прокрутить в представлении.

Я подумал о нескольких взломанных путях - например, запросе в цикле foreach, но это было неправильно, и я надеюсь, что есть лучший способ.

+0

В итоге я просто сделал еще один запрос в модели. '$ this-> db-> order_by ('websiteNumber');' $ this-> db-> get ('main') '. Это работает, но я все еще хочу знать, есть ли способ сделать это с одним запросом. – alanj

ответ

0

Вы должны использовать метод order_by:

$this->db->order_by('clientName', 'asc'); 
$this->db->order_by('websiteNumber', 'asc'); 

$query = $this->db->get('client'); 

return $query->result_row(); 
+0

Это будет просто сортировать его по имени клиента, а затем по номеру веб-сайта, я ищу, чтобы вернуть массив, который группирует siteNumber и langNumber по имени clientName. – alanj

0

Я не активный эксперт записи, но я думаю, вы должны просто использовать group by на имя клиента, то group_concat в сочетании с PHP explode для просмотра.

Мой опыт работы с активными записями заключается в том, что вы должны просто ожидать того же выхода, что и mysql_fetch_assoc. Это не так зрело, как Doctrine

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