I want to add a property to an attribute of a model based on a SQL-query. However, the SQL-query will make a comparison to the preceding element of the property-array.
More concretely: the model is walks which has many waypoints. I want to calculate the distance between each waypoint via SQL (see below). Two questions:
-
how to attach $distance (see model) to a property?
-
how do I access the lat/long property of the previous waypoint?
The code
Controller: WalksController.php
public function relations()
{
return array(
'waypoints' => array(self::HAS_MANY, 'Waypoints', 'walk_id', 'order'=>'waypoints.order_id ASC'),
);
}
Model: Waypoint.php
/**
* calculates the distance between two sets of lat/long coordinates
* @return array distance in km and miles
*/
public function distanceBetween(){
$command=$connection->createCommand($sql);
$distance["miles"]=$command->query("SELECT(
DEGREES(
ACOS(
SIN(RADIANS( ".$this->lat." )) * SIN(RADIANS( ".$lat2." ))
+ COS(RADIANS( ".$this->lat." )) * COS(RADIANS( ".$lat2." ))
* COS(RADIANS( ".$this->lon." - ".$lon2." ))
) * 60 * 1.1515
)
) AS distance"); //returns miles
$distance["km"]=$distance["miles"]*1.609344;
return $distance;
}
The terminology might not be accurate, as my OOP & MVC is a bit rusty and I am just getting back into it thanks to Yii