2016-09-06 44 views
0

你好,我如何返回一个原始查询到yii 2中的数组?我一直在这个代码,我认为它应该返回多行,但是当我尝试在一个视图中的foreach它,它说的是对的foreach()返回原始查询作为数组yii 2

这里提供了无效的说法是错误页面:

enter image description here

这里是我的

型号

public function Showprerequisites($trno){ 
    // $connection = Yii::$app->GetDb(); 

    return Yii::$app->db->CreateCommand(' 

    SELECT * FROM 
(
SELECT pre1 AS col FROM ccsubject WHERE trno = 29005 AND pre1 IS NOT NULL 
UNION 
SELECT pre2 AS col FROM ccsubject WHERE trno = 29005 AND pre2 IS NOT NULL 
UNION 
SELECT pre3 AS col FROM ccsubject WHERE trno = 29005 AND pre3 IS NOT NULL 
UNION 
SELECT pre4 As col FROM ccsubject WHERE trno = 29005 AND pre4 IS NOT NULL 
UNION 
SELECT pre5 AS col FROM ccsubject WHERE trno = 29005 AND pre5 IS NOT NULL 
) T1 

    ')->execute(); 
    } 

查看工作代码

$preq = TestController::Showprerequisites(29005); 
foreach($preq as $values){ 
    echo $values['col']; 
} 

回答

2

您只需要使用queryAll()代替execute()

return Yii::$app->db->CreateCommand('SELECT...')->queryAll(); 

关于execute()

此方法仅用于执行非查询SQL语句,比如INSERTDELETEUPDATE SQLs。没有结果集将被返回。

关于queryAll()

执行SQL语句,并同时返回所有行。