YII查询生成器不会显示结果

时间:2015-04-17 20:39:26

标签: php sql postgresql yii where

使用yii查询构建器的两个不同的sintax时遇到问题 使用它,完美地工作(但我不能在SQL中使用变量)

$connection = Yii::app()->db;

$sql='SELECT id_activo, nom_activo, valor_activo, cod_amenaza, tipo_activo, deg_amenaza, 
frec_amaneza FROM activo, amenazas WHERE amenazas.activos_amenaza ILIKE "%"|| activo.tipo_activo ||"%" AND id_activo=1';
$query = str_replace('"',"'",$sql);

$command = $connection->createCommand("$query");
$rows = $command->queryAll();

使用此功能不会显示任何内容

$i=1;
$rows = Yii::app()->db->createCommand()
->select('id_activo, nom_activo, valor_activo, cod_amenaza, tipo_activo, deg_amenaza, frec_amaneza')
->from('activo, amenazas')
->where('amenazas.activos_amenaza LIKE :substr', array(':substr' => '%activo.tipo_activo%'))
->andWhere('id_activo=:id', array(':id'=>$i))
->queryAll();

如果我删除where条件,LIKE工作正常

1 个答案:

答案 0 :(得分:1)

问题是'%activo.tipo_activo%'不被视为来自数据库的数据,而是作为纯字符串。

您可以像这样重写连接条件: $rows = Yii::app()->db->createCommand() ->select('id_activo, nom_activo, valor_activo, cod_amenaza, tipo_activo, deg_amenaza, frec_amaneza') ->from('activo') ->join('amenazas', "amenazas.activos_amenaza LIKE '%'||activo.tipo_activo||'%' ")
->where('id_activo=:id', array(':id'=>$i)) ->queryAll();