我正在使用 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/