我需要使用postgres point类型属性的Accessor。 在db播放器中,我只想传递lat long,而在访问器中,我将它们转换为postgres几何点格式。
以下是我尝试在用户模型中使用的Accessor:
public function setSourceLatLongAttribute($value)
{
$latlong = explode(" ", $value);
$latitude = $latlong[0];
$longitude = $latlong[1];
$this->attributes['source_lat_long'] = DB::raw("ST_SetSRID(ST_MakePoint($latitude, $longitude), 4326)");
}
我只想在播种机中保存这样的位置:
$users = [
[
'name' => 'Admin Istrator',
'email' => 'admin@admin.com',
'password' => bcrypt('1234'),
'confirmation_code' => md5(uniqid(mt_rand(), true)),
'confirmed' => true,
'source_lat_long' => "31.9566 35.9457",
'created_at' => Carbon::now(),
'updated_at' => Carbon::now(),
];
DB::table(config('access.users_table'))->insert($users);
我期望在运行数据库播种器时调用Accessor,但是我从postgres db中收到错误:
[Illuminate\Database\QueryException]
SQLSTATE[XX000]: Internal error: 7 ERROR: parse error - invalid geometry
HINT: "31.9566 " <-- parse error at position 8 within geometry
[PDOException]
SQLSTATE[XX000]: Internal error: 7 ERROR: parse error - invalid geometry
HINT: "31.9566 " <-- parse error at position 8 within geometry
所以,问题是,我可以使用Accessor来帮助我完成这个db播种任务吗?或者,我如何获得有效的几何种子?