我使用YII作为PHP框架。其中有一个功能是查询附近的人。
我的代码是这样做的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | class NearByController extends Controller
{
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这个属性:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | 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框架。其中有一个功能是查询附近的人。
我的代码是这样做的:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | class NearByController extends Controller
{
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这个属性:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 | 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对象中获取不到这个值