Я новичок в codeigniter (хотя я полагаю, что это не исключительно вопрос CI) и у меня есть метод в модели, который выбирает данные из двух таблиц, объединенных идентификатором.
Таблица 1 (tblclients) выглядит следующим образом:
+----+------------+
+ id + c_name +
+----+------------+
+ 1 + Joe Bloggs +
+ 2 + Jim Bloggs +
+ 3 + Tim Bloggs +
+----+------------+
Таблица 2 (tblstars) выглядит так:
+----+------------+
+ id + s_date +
+----+------------+
+ 1 + 27/01/12 +
+ 1 + 15/02/12 +
+ 1 + 18/02/12 +
+ 2 + 03/01/12 +
+ 2 + 11/02/12 +
+ 2 + 15/02/12 +
+ 3 + 01/01/12 +
+ 3 + 19/02/12 +
+----+------------+
Я хочу «свернуть» объединенные данные в одну строку для каждой строки в tblclients, чтобы я мог вывести, например:
+----+------------+--------------------------------+
+ id + Name + Dates +
+----+------------+--------------------------------+
+ 1 + Joe Bloggs + 27/01/12 15/02/12 18/02/12 +
+ 2 + Jim Bloggs + 03/01/12 11/02/12 15/02/12 +
+ 3 + Tim Bloggs + 01/01/12 19/02/12 +
+----+------------+--------------------------------+
Теперь я «решил» проблему, используя в моей модели следующее:
function get_clients_concat()
{
$query = $this->db
->select('tblclients.id, tblclients.c_name, GROUP_CONCAT(tblstars.s_date SEPARATOR "#") AS star_dates', NULL, FALSE)
->join('tblstars', 'tblstars.id = tblclients.id', 'left')
->order_by('tblclients.id')
->group_by('tblclients.id')
->get('tblclients');
return $query->result();
}
, а затем взорвать массив (созданный GROUP_CONCAT), на мой взгляд, и выполнить с ним некоторую обработку ... но, похоже, он действительно CLUNKY.
Есть ли лучшее решение?