db seed时如何使用Accessor?

时间:2016-04-14 14:14:59

标签: postgresql laravel eloquent postgis

我需要使用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播种任务吗?或者,我如何获得有效的几何种子?

0 个答案:

没有答案