LoginSignup
6
4

More than 5 years have passed since last update.

laravelでgeometry型から緯度経度を取ってくる時に使うスコープ

Last updated at Posted at 2015-09-11

例えばshopsテーブルにあるlatlongというカラムがgeometry型だったとして、ここから緯度経度を引っ張り出したい時がある。
特にgooglemapを埋め込む時にやれ中央にマーカーを置きたいとなると緯度経度が必要になる。

せっかくlaravelを使っているのであれば、スコープを使って一工夫
そもそもスコープって何って人はこちらを参照
http://laravel.com/docs/5.0/eloquent#query-scopes

shopsテーブルのmodelに以下を記述

public function scopeLatlong($q)
{
    return $q->select(array('*', DB::raw('X(latlong) as `lat`'), DB::raw('Y(latlong) as `long`')));
}

このスコープを使うことで緯度の入ったlatカラム,経度の入ったlongカラムを追加した状態でテーブルのデータを取得できるようになる。

続いてcontroller側でshopsテーブルのidが指定のidのデータを取得

$latlong = Shop::latlong()->find($id);

こんな感じで緯度経度が取得できる。

$latlong->lat  //緯度
$latlong->long //経度
6
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
4