我有一个user_sessions表,其中有一个名为“geo_location”的列,它是一个POINT列,存储用户当前位置的纬度和经度值,如果不可用,则为NULL。
当我在Laravel中创建一个绑定到该表的Model时,它只有在geo_location字段完全隐藏时才有效。否则它会抛出JSON错误,因为它没有正确查询geo_location列中的单独X和Y值。
有没有一种方法可以让我在Laravel模型中创建一个访问器,它可以在数据显示之前操作数据,这样我就可以把它包含在我的结果中?
我是否需要修改我的UserSessions控制器并添加一个get()函数来使用原始SQL?
2条答案
按热度按时间kqqjbcuj1#
如果您使用的是PostgreSQL + PostGIS,这就是我在L4.1中所做的
位置的类型为几何(POINT),使用迁移表中的原始sql查询创建
表:
型号:
使用REST的示例输出如下所示:
{domain}/place/{1}
注意事项:
使用默认访问器
返回一个十六进制对象,而不是一个字符串。所以我选择使用一个原始查询与PostGIS函数。
在WKT中,我希望你可以使用本地php脚本轻松地返回经度/纬度。:-)
我希望这能让您对如何创建访问器有所了解。
uyhoqukh2#
我在模型中使用了全局范围
https://laravel.com/docs/10.x/eloquent#anonymous-global-scopes