我试图执行这个sql查询,但出现了异常。。。我在PhpMyAdmin中尝试了这个查询,它运行良好。
<?php
$criteria=new CDbCriteria;
$criteria->condition='select min(purchase_order_id) from purchase_order where purchase_order_id >'.$model->purchase_order_id;
$nextfield = 'POrder::model()->model()->findAll($criteria);
?>
例外情况是,CDbCommand无法执行SQL语句:SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;请查看与MySQL服务器版本对应的手册,了解在第1行"select min(purchase_order_id)from purchase_order where purchase_order_id>65"附近使用的正确语法。执行的SQL语句为:SELECT*FROM purchase_order
t
WHERE SELECT min(purchase_order_id)FROM purchase_order WHERE purchase_order_id>65
如果您只想要查询的结果,请执行以下操作:
Yii::app()->db->createCommand("
SELECT MIN(purchase_order_id) FROM purchase_order
WHERE purchase_order_id > :purchase_order_id
")->queryScalar(array('purchase_order_id'=>$model->purchase_order_id'));
这将返回您将从phpmyadmin或mysql工作台获得的唯一值。
如果您想要与该purchase_order_id对应的型号记录,那么您可以执行以下操作:
$criteria=new CDbCriteria;
$criteria->addCondition("t.purchase_order_id = (
SELECT MIN(purchase_order_id)
FROM purchase_order
WHERE purchase_order_id > :previous_purchase_order_id)");
$criteria->params['previous_purchase_order_id'] = $model->purchase_order_id;
$nextfield = 'POrder::model()->model()->find($criteria);
我假设只有一个这样的模型,所以我将findAll
更改为find
。