Php 无法使用查询生成器选择数据
我想用QueryBuilderYII框架从两个表中选择数据。下面是我的脚本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')
$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起可用