加入 Yii 类 CDBCriteria?

Posted

技术标签:

【中文标题】加入 Yii 类 CDBCriteria?【英文标题】:Joins in Yii class CDBCriteria? 【发布时间】:2012-02-09 17:55:38 【问题描述】:

谁能帮我将下面的 SQL 语句(在我的数据库中工作)转换为 Yii 框架 CDbCriteria 类格式?

这是我的 SQL:

SELECT cars.*, 3963 * acos(cos(radians(53.376217)) * cos(radians(car_dealers.latitude)) * cos(radians(-1.499595) - radians(car_dealers.longitude)) + sin(radians( 53.376217)) * sin(radians(car_dealers.latitude))) AS 距离从汽车加入 car_dealers ON cars.company_id=car_dealers.company_id WHERE cars.make='Fiat' AND cars.model='Punto' ORDER BY distance;

这是我的 Yii 尝试:

$criteria= new CDbCriteria;
$criteria->alias = 'cars';
$criteria->select= 'cars.*, 3963 * acos(cos(radians(53.376217)) * cos(radians(car_dealers.latitude)) * cos(radians(-1.499595) - radians(car_dealers.longitude)) + sin(radians(53.376217)) * sin(radians(car_dealers.latitude))) AS distance';
$criteria->join='JOIN car_dealers ON cars.company_id=car_dealers.company_id';
$criteria->condition= 'make=:make AND model=:model'; 
$criteria->params= array('[:make] => Fiat,[:model] => Punto')
$criteria->order='distance';

非常感谢任何可以提供帮助的人! :)

【问题讨论】:

您遇到的错误是什么?请提供更多细节。马上,我可以看到您错误地使用了参数 - $criteria->params = array(':make'=>'Fiat', ':model'=>'Punto'); 基本上我的对象会根据该参数返回汽车表中的所有值,但不会将距离值带回对象中。 我希望你已经在汽车模型类中声明了 $distance 变量 【参考方案1】:

这里有错别字

$criteria->params= array('[:make] => Fiat,[:model] => Punto')

应该是:

$criteria->params= array(':make' => 'Fiat',':model' => 'Punto')

【讨论】:

以上是关于加入 Yii 类 CDBCriteria?的主要内容,如果未能解决你的问题,请参考以下文章

Yii CDbCriteria类中方法

Yii CDbCriteria() 的使用方法/属性

Yii CDbCriteria() 的使用方法/属性

Yii CDbCriteria 从另一个相关对象中选择一个相关对象的字段

Yii框架:Clistview报告的结果数量不正确

Yii2 : Active Record 添加 Not In 条件