如何用 Eloquent 来储存一个 point 类型的坐标点?

我在使用 Eloquent 来储存一个 point 类型的坐标点时,出现了这样问题

代码

file

报错

file

使用命令行测试时是可以的


 insert into `stores` (`name`, `provider`, `location`, `updated_at`, `created_at`) values ('test', 'yuanmoc', GeomFromText('POINT(123.462202 41.804471)'), '2018-05-10 14:19:28', '2018-05-10 14:19:28');
 

请教大神,如何使用 Eloquent 来储存一个 point 类型的坐标点。(求解求解!!!)

《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 3

试试

DB::raw("GeomFromText('POINT(123.462202 41.804471)')")
5年前 评论

我的也这样:

SQLSTATE[22003]: Numeric value out of range: 1416 Cannot get geometry object from data you send to the GEOMETRY field (SQL: update users set position = GeomFromText('Point(121.44 31.24)'), updated_at = 2018-11-08 11:20:34 where id = 1)

楼上这个方法有效果:

$user = $this->user;

$data = [
    'position' => \DB::raw("GeomFromText('Point({$longitude} {$latitude})')")
];

$result = User::where('id', $user->id)->update($data);

更多需要

http://lonelycoding.com/laravel-model-with...

https://stackoverflow.com/questions/231368...

5年前 评论

按照一楼的方法报错

1305 - FUNCTION database_name.GeomFromText does not exist

改为

\DB::raw("Point({$lng},{$lat})")

解决

5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!