您好,欢迎访问一九零五行业门户网

使用YII做后台,使用Yii的AR达不到要求的效果很急,我该怎么办?

我使用yii作为php框架。其中有一个功能是查询附近的人。
我的代码是这样做的:
class nearbycontroller extends controller{ //发现附近的人。这里还没有做筛选。distance在哪里? public function actionindex() { $latitude= userrefreshform::model()->getlatitude(); $longitude=userrefreshform::model()->getlongitude(); $criteria=new cdbcriteria(); $nearpersons=mgetnear::getnearpersonsnoorder(); $criteria->select=' t.*, (acos(sin(('.$latitude.'* 3.1415) / 180 ) *sin((tbl_myr_refresh.latitude * 3.1415) / 180 ) +cos(('.$latitude.'* 3.1415) / 180 ) * cos((tbl_myr_refresh.latitude * 3.1415) / 180 ) *cos(('.$longitude .'* 3.1415) / 180 - (tbl_myr_refresh.longitude * 3.1415) / 180 ) ) * 6378.137) as distance'; $criteria->join='left join tbl_myr_refresh on tbl_myr_refresh.userid=t.userid'; $criteria->addincondition('t.userid',$nearpersons); $criteria->order='distance asc'; $usermodel=user::model(); $total=$usermodel->count($criteria); $pager=new cpagination($total); $pager->pagesize=10; $pager->applylimit($criteria); $userlist=$usermodel->findall($criteria); p($userlist); }

我是使用mysql来计算距离的。
但是当我打印出来的时候发现没有distance这个属性:
array( [0] => user object ( [password1] => [password2] => [geohash] => [_new:cactiverecord:private] => [_attributes:cactiverecord:private] => array ( [userid] => 3 [username] => [password] => c3284d0f94606de1fd2af172aba15bf3 [email] => 741691740@qq.com [phonenumber] => [birthday] => 1992-11-01 [gender] => 1 [homeland] => 四川南充 [wantwhere] => [registerdate] => 2014-06-27 [smallavatar] => smallavatar140385273350016.jpg [bigavatar] => bigavatar140385273350016.jpg [qrcode] => [isstudent] => 1 [wentwhere] => [md5] => f2300adcae381de30ae58c8f4309dda9 [sessionid] => o5fcapmo7clfiiua717n1aa525 [iemi] => 123456789 ) [_related:cactiverecord:private] => array ( ) [_c:cactiverecord:private] => [_pk:cactiverecord:private] => 3 [_alias:cactiverecord:private] => t [_errors:cmodel:private] => array ( ) [_validators:cmodel:private] => [_scenario:cmodel:private] => update [_e:ccomponent:private] => [_m:ccomponent:private] => ))

也就是yii只把user表中有的打印出来了。但是distance这个属性没有打印出来!
求救。yii大神告诉我该如何获得这个distance属性?
回复内容: 我使用yii作为php框架。其中有一个功能是查询附近的人。
我的代码是这样做的:
class nearbycontroller extends controller{ //发现附近的人。这里还没有做筛选。distance在哪里? public function actionindex() { $latitude= userrefreshform::model()->getlatitude(); $longitude=userrefreshform::model()->getlongitude(); $criteria=new cdbcriteria(); $nearpersons=mgetnear::getnearpersonsnoorder(); $criteria->select=' t.*, (acos(sin(('.$latitude.'* 3.1415) / 180 ) *sin((tbl_myr_refresh.latitude * 3.1415) / 180 ) +cos(('.$latitude.'* 3.1415) / 180 ) * cos((tbl_myr_refresh.latitude * 3.1415) / 180 ) *cos(('.$longitude .'* 3.1415) / 180 - (tbl_myr_refresh.longitude * 3.1415) / 180 ) ) * 6378.137) as distance'; $criteria->join='left join tbl_myr_refresh on tbl_myr_refresh.userid=t.userid'; $criteria->addincondition('t.userid',$nearpersons); $criteria->order='distance asc'; $usermodel=user::model(); $total=$usermodel->count($criteria); $pager=new cpagination($total); $pager->pagesize=10; $pager->applylimit($criteria); $userlist=$usermodel->findall($criteria); p($userlist); }

我是使用mysql来计算距离的。
但是当我打印出来的时候发现没有distance这个属性:
array( [0] => user object ( [password1] => [password2] => [geohash] => [_new:cactiverecord:private] => [_attributes:cactiverecord:private] => array ( [userid] => 3 [username] => [password] => c3284d0f94606de1fd2af172aba15bf3 [email] => 741691740@qq.com [phonenumber] => [birthday] => 1992-11-01 [gender] => 1 [homeland] => 四川南充 [wantwhere] => [registerdate] => 2014-06-27 [smallavatar] => smallavatar140385273350016.jpg [bigavatar] => bigavatar140385273350016.jpg [qrcode] => [isstudent] => 1 [wentwhere] => [md5] => f2300adcae381de30ae58c8f4309dda9 [sessionid] => o5fcapmo7clfiiua717n1aa525 [iemi] => 123456789 ) [_related:cactiverecord:private] => array ( ) [_c:cactiverecord:private] => [_pk:cactiverecord:private] => 3 [_alias:cactiverecord:private] => t [_errors:cmodel:private] => array ( ) [_validators:cmodel:private] => [_scenario:cmodel:private] => update [_e:ccomponent:private] => [_m:ccomponent:private] => ))

也就是yii只把user表中有的打印出来了。但是distance这个属性没有打印出来!
求救。yii大神告诉我该如何获得这个distance属性?
(acos(sin(('.$latitude.'* 3.1415) / 180 ) *sin((tbl_myr_refresh.latitude * 3.1415) / 180 ) +cos(('.$latitude.'* 3.1415) / 180 ) * cos((tbl_myr_refresh.latitude * 3.1415) / 180 ) *cos(('.$longitude .'* 3.1415) / 180 - (tbl_myr_refresh.longitude * 3.1415) / 180 ) ) * 6378.137) as distance
别名必须是该表中已经有的字段拿来借用一下,否则的话是row对象中获取不到这个值
其它类似信息

推荐信息