Php 无法使用查询生成器选择数据

Php 无法使用查询生成器选择数据,php,yii2,query-builder,Php,Yii2,Query Builder,我想用QueryBuilderYII框架从两个表中选择数据。下面是我的脚本 $result = $command->select( array('a.parameter_name', 'a.unit', 'b.result', 'b.normal_value')) ->from('parameter a') ->join('test b', 'a.parameter_id = b.parameter_id')

我想用QueryBuilderYII框架从两个表中选择数据。下面是我的脚本

$result = $command->select( array('a.parameter_name', 'a.unit', 'b.result', 'b.normal_value'))
                ->from('parameter a')
                ->join('test b', 'a.parameter_id = b.parameter_id')
                ->where('b.noRM='.$_POST['no_rm'])
                ->queryAll();
当我
echo
结果时,我只得到
参数\u id

foreach($result as $row){
   $name = $row['parameter_name'];
   $unit = $row['unit'];
   $normal_value = $row['normal_value'];
}
我得到这个错误

误差500

未定义索引:参数名称


如何修复它?

两个
数组或
select()
中的字符串都可以工作,但是使用
Yii::app()->db->createCommand()
代替
$command
变量,因为
$command
保留用于选择和插入的旧
CDbConnection
对象

$result = Yii::app()->db->createCommand()->select('a.parameter_name, a.unit, b.result, b.normal_value')
                ->from('parameter a')
                ->join('test b', 'a.parameter_id = b.parameter_id')
                ->where('b.noRM='.$_POST['no_rm'])
                ->queryAll();

array
select()
中的字符串都可以工作,但是使用
Yii::app()->db->createCommand()
代替
$command
变量,因为
$command
保留用于选择和插入的旧
CDbConnection
对象

$result = Yii::app()->db->createCommand()->select('a.parameter_name, a.unit, b.result, b.normal_value')
                ->from('parameter a')
                ->join('test b', 'a.parameter_id = b.parameter_id')
                ->where('b.noRM='.$_POST['no_rm'])
                ->queryAll();

尝试使用别名解析列名(与在数组键中使用的名称相同)


尝试使用别名解析列名(与在数组键中使用的名称相同)


select中没有
参数\u id
,能否再次检查
$result
变量未得到覆盖?让我们看看。
$命令可能在内存中执行了旧的查询
-它不是true@SiZE根据@Diyah question,$command是CDbConnection的对象,她插入了一些值,然后从同一个对象中检索了一些值,这就是她得到错误结果的原因。仅仅因为
$command
持有相同的对象,这就是我写这行的原因。select中没有
参数_id
,您能再次检查
$result
变量未被覆盖吗?让我们来看看。
$command可能在内存中执行了旧的查询
-它不是true@SiZE根据@Diyah问题,$command是CDbConnection的一个对象,她插入了一些值,然后从同一个对象中检索了一些值,这就是她得到错误结果的原因。仅仅因为
$command
持有相同的对象,这就是我写这行的原因。请显示完整的方法。在创建新查询之前,您可能需要调用
$command->reset()
。此方法自v1.1.16起可用。请显示完整方法。在创建新查询之前,您可能需要调用
$command->reset()
。此方法自v1.1.16起可用