如何用 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 类型的坐标点。(求解求解!!!)

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 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年前 评论

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