我现在正在考虑这个问题并且没有掌握(因为我是 MVC 和 CI 的相对新手)。我什至不确定这是否是 MVC、MySQL 或数组的问题。
情况:2个MySQL表
- 表数据:id、title、list
- 表值:id、name
查询数据表会产生如下数组(摘录):
[4] => Array
(
[id] => 3
[title] => Foo
[list] => 1,2,3,4,6,14
)
[5] => Array
(
[id] => 4
[title] => Bar
[list] => 2,6,9,12
)
字段列表包含逗号分隔的值,这些值对应于值表的某些 ID,例如
[3] => Array
(
[id] => 12
[name] => 'value12'
)
我尝试为每一行做的是:
- 获取列表值并将其分解为数组
- 检查values -table 中的结果集(通过 in_array() 方法)
- 如果返回 ID 的名称值
以某种方式将其包含到主要结果集中(例如,作为二维数组):
[5] => 数组([id] => 4 [title] => Bar [list] => 数组([0] => value6 [1] => value12 ...))
到目前为止,我天真的方法是
- 对 2 个表中的每一个运行一个查询
- 通过 in_array 比较 2 个结果集
我的主要问题(在尝试严格分离模型、控制器和视图时):如何在数据表结果集的“主循环”中包含值表中的名称字段?
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 或其他东西)。
任何提示,甚至是指向信息位的简单链接,都将受到高度赞赏。
感谢一万亿!
晶圆厂