Php 修复SQL和循环以自动将数据放入CGridView
我目前正在使用SQL创建一个新的数据提供程序来填充我的cgridviewPhp 修复SQL和循环以自动将数据放入CGridView,php,sql,sql-server,yii,Php,Sql,Sql Server,Yii,我目前正在使用SQL创建一个新的数据提供程序来填充我的cgridview 我面临的问题是,我必须直接针对用户创建的动态问题的ID,并将它们逐个添加到表单视图中 例如,我使用的SQL是 MAX(CASE WHEN uv.user_type_variables_id = 1 THEN uv.value ELSE NULL END) Question1, MAX(CASE WHEN uv.user_type_variables_id = 2 THEN uv.value ELSE NULL END) Q
我面临的问题是,我必须直接针对用户创建的动态问题的ID,并将它们逐个添加到表单视图中 例如,我使用的SQL是
MAX(CASE WHEN uv.user_type_variables_id = 1 THEN uv.value ELSE NULL END) Question1,
MAX(CASE WHEN uv.user_type_variables_id = 2 THEN uv.value ELSE NULL END) Question2,
MAX(CASE WHEN uv.user_type_variables_id = 3 THEN uv.value ELSE NULL END) Question3,
MAX(CASE WHEN uv.user_type_variables_id = 4 THEN uv.value ELSE NULL END) Question4,
MAX(CASE WHEN uv.user_type_variables_id = 5 THEN uv.value ELSE NULL END) Question5,
MAX(CASE WHEN uv.user_type_variables_id = 6 THEN uv.value ELSE NULL END) Question6
我必须把每一个都放在视图中
array(
'header' => 'Question1',
'name' => 'uv.user_type_variables_id',
'type' => 'raw',
'value' => '$data[\'Question1\']',
),
array(
'header' => 'Question2',
'name' => 'uv.user_type_variables_id',
'type' => 'raw',
'value' => '$data[\'Question2\']',
),
当然,当我不知道ID并且不能在每次用户添加字段时以编程方式更改视图时,这就行不通了
我如何像上面那样针对SQL,然后动态循环并放入gridview,而不必手动放入字段
我只是假设有可能以这种方式定位它,我想不出任何其他方法来定位每个单独的ID并命名它,这样我就可以在不声明ID的情况下将其放入网格中尝试以下方法:
SELECT user_type_variables_id,
max(value),
row_number() over (order by user_type_variables_id) as n
FROM uv
--WHERE uv.user_type_variables_id BETWEEN 1 AND 6
GROUP BY user_type_variables_id
我遇到的问题是,我需要命名每个问题并将其分配给问题1等等。您可以通过一个查询来完成此操作,并返回ROW_NUMBER(),将其用作查询的名称并在循环中填充数组,或在循环中查询“for(;)”,首先询问uv.user_type_变量的计数(1)