65 lines
1.8 KiB
PHP
Executable File
65 lines
1.8 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Models;
|
|
|
|
use Illuminate\Database\Eloquent\Model;
|
|
use Illuminate\Support\Facades\DB;
|
|
|
|
class Dummy extends Model
|
|
{
|
|
public static function addDummyTrack($data)
|
|
{
|
|
$id = DB::table("t_dummy_tracks")->insertGetId($data);
|
|
return $id;
|
|
}
|
|
|
|
public static function getByGpsId($gps_id)
|
|
{
|
|
return DB::select("SELECT * FROM t_dummy_tracks WHERE gps_id = ?;", [$gps_id]);
|
|
}
|
|
|
|
public static function updateDummyTrack($data)
|
|
{
|
|
return DB::table("t_dummy_tracks")
|
|
->where("id", $data["id"])
|
|
->update($data);
|
|
}
|
|
|
|
public static function deleteDummyTrack($data)
|
|
{
|
|
return DB::table("t_dummy_tracks")
|
|
->where("id", $data["id"])
|
|
->delete();
|
|
}
|
|
|
|
// ------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
|
|
|
public static function addDummyHub($data)
|
|
{
|
|
$id = DB::table("t_dummy_hubs")->insertGetId($data);
|
|
return $id;
|
|
}
|
|
|
|
/**
|
|
* https://stackoverflow.com/questions/574691/mysql-great-circle-distance-haversine-formula
|
|
* miles: 3958.756 || 3959
|
|
* km: 6371
|
|
* meters: 6371000
|
|
* more accurate using km/meters than miles i think ~
|
|
*/
|
|
public static function nearestHubInCircle($lat, $lng)
|
|
{
|
|
$query = "SELECT id,name, ( 6371000 * acos( cos( radians( :lat1 ) ) * cos( radians( lat ) )
|
|
* cos( radians( lng ) - radians( :lng ) ) + sin( radians( :lat2 ) ) * sin(radians( lat )) ) ) AS distance
|
|
FROM t_dummy_hubs
|
|
HAVING distance <= 800
|
|
ORDER BY distance;";
|
|
$params = [
|
|
"lat1" => $lat,
|
|
"lat2" => $lat,
|
|
"lng" => $lng,
|
|
];
|
|
return DB::select($query, $params);
|
|
}
|
|
}
|