php - Laravel Eloquent 后处理查询

标签 php postgresql laravel postgis

我正在使用 PostgreSQL + PostGIS 设置,我想从数据库中以 GeoJSON 形式获取 geom 列。我知道我可以使用 ST_AsGeoJSON() 函数来做到这一点。所以我使用此代码来获取所有国家/地区:

$countries = Country::select(["id", "name", DB::raw("ST_AsGeoJSON(geom) AS geom")])->get()

但是,我最终得到的 $countries[i]->geom 是一个字符串,所以我需要 for 循环来执行此操作:

$countries[i]->geom = json_decode($countries[i]->geom);

我想将这行代码移至 Eloquent 模型,这样我就不必担心是否忘记解码列。是否有我应该重写的方法或任何方式将此特殊功能添加到我的国家/地区模型中?

最佳答案

将以下内容添加到您的模型中

protected $casts = [
    'geom' => 'array',
];

https://laravel.com/docs/5.3/eloquent-mutators#array-and-json-casting

关于php - Laravel Eloquent 后处理查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41268393/

相关文章:

php - Codeigniter 将数据从模型传递到 Controller 解析器

javascript - angularjs 表单输入建议

php - 使用 wp_dropdown_pages() 显示自定义帖子类型的下拉列表

postgresql - 当REVOKE GRANT被称为PostgreSQL时,二级权限会发生什么?

mysql - Laravel 5.4 中没有默认值时出现错误

php - 从 mysql 获取主类别的子类别

javascript - 是否可以在 postgreSQL 中将表 A ID 索引到表 B userId?

postgresql - Keycloak不使用postgres数据库并尝试连接h2数据库

laravel - 如何比较 Laravel 中的碳日期?

php - PayPal 单笔付款至电子邮件