Я думаю об этом в течение нескольких дней и не прихожу к схватам (так как я релятивирую новичок в MVC и CI). Я даже не уверен, что это проблема с MVC, MySQL или массивами.CI: запрос двух таблиц в модели, взорваться
Ситуация: 2 MySQL таблицы
- Таблица данные: идентификатор, название, список
- Таблица значения: идентификатор, имя
запросов к данных таблицы приводит к массиву, подобному следующему (выдержка):
[4] => Array
(
[id] => 3
[title] => Foo
[list] => 1,2,3,4,6,14
)
[5] => Array
(
[id] => 4
[title] => Bar
[list] => 2,6,9,12
)
Поле список содержит разделенные запятыми значения, которые соответствуют некоторым идентификаторами значений таблица как
[3] => Array
(
[id] => 12
[name] => 'value12'
)
То, что я пытаюсь сделать для каждой строки:
- возьмите лист -значения & взорвать его в массив
- проверки с результирующим набором из значений -стол (через in_array метод())
- возврата значение Названия идентификаторов, если
включить его каким-то образом в основных результирующем наборе (например, в виде 2-мерного массива):
[5] => Array ( [ID] => 4 [название] => Бар [список] => Array ( [0] => value6 [ 1] => value12 ... ) )
Мой наивный подход до сих пор был
- выполнения запроса на каждом из 2 столы
- сравнить наборы 2 результата с помощью in_array
Моей главной проблемы (при попытке строго отдельная модель, контроллер и вид): Как я могу включить имя поле из значений стола в «главном цикле "из данные стол результат набор?
if($q->num_rows() > 0)
{
$data[] = $q->result_array();
foreach ($q->result() as $row)
{
$data[] = $row;
}
return $data;
}
Если я использую следующий (громоздкий) подход я, естественно, получить новый пункт каждый раз:
foreach ($q->result_array() as $row)
{
$data[]['id'] = $row['id'];
$data[]['title'] = $row['title'];
$data[]['list'] = $row['year'];
}
Поскольку это база данных MySQL я не вижу способа сделать то взрывается и сравнения в SQL (с LIKE или что-то еще).
Любые подсказки, даже простая ссылка на информационный бит, высоко ценятся.
Спасибо, триллион!
ФАБ
Абсолютно. Каждый раз, когда вы думаете о сохранении списка идентификаторов, разделенных запятыми, в столбце таблицы, это сильный сигнал, что вы, вероятно, делаете что-то неправильно. – 2010-12-01 13:43:30