2016-03-22 11 views
3

Şu anda cgridview'imi doldurmak için yeni bir dataprovider oluşturmak için SQL kullanıyorum.SQL ve loop'u otomatik yer verilerinin CGridView'a sabitlenmesi

Yapmakta olduğum sorun, kimlikleri doğrudan kullanıcıların oluşturduğu dinamik soruları hedeflemek ve form görünümüne tek tek eklemem gerektiğidir.

Örneğin, Doğal Bu işe yaramazsa ben kullanıyorum 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 

ve ben

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\']', 
     ), 

gibi görünümünde her biri tahammül ettim ben don Kimliği bilmez ve kullanıcı bir alan eklediğinde programatik olarak değiştiremez!

Yukarıdaki gibi SQL'i hedefleme, ardından dinamik olarak döngü oluşturma ve alanları manuel olarak girmek zorunda kalmadan tablo görünümüne yerleştirme hakkında nasıl giderim?

Ben sadece bu şekilde hedef mümkün olduğunu tahmin ediyorum

, ben kimliği

cevap

0
bildirmek olmadan o yüzden bir ızgarada yerleştirebilirsiniz her kimliğini ve adını hedeflemek için başka bir şekilde düşünemiyorum

şunu deneyin:

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 
+0

yaşadığım sorun sonra her soruyu isim ve sorgulamaya atamak için gerektiğidir 1 vs tek sorguda bunu ve olarak kullanmak için ROW_NUMBER() döndürebilir – DevAL

+0

Sorgu ve boşluk dizisini döngü halinde veya "((;;)" döngüsünde sorgulama, ilk olarak uv.user_type_variables_id öğesinin (1) sayısını sorma –