【问题标题】:Joins in Yii class CDBCriteria?加入 Yii 类 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 变量

标签: sql yii


【解决方案1】:

这里有错别字

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

应该是:

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

【讨论】:

    猜你喜欢
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-14
    • 1970-01-01
    相关资源
    最近更新 更多