例えば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 //経度