2020-08-08 [長年日記]

_ [CakePHP4]Geometry型の読み出し

そのままsave()すると死ぬ。

$item=Table->get($id);
Table->save($item); // 死ぬ

そんなアホな。こうする必要がある。

$item=Table->get($id);
// Table->save($item);

// 死ぬ前にちょっと
$q=Table->find();
$geom=$q->func()->ST_AsText(["location"=>"identifier"]);
$q->where(["id"=>$id]);
$q->select(["name","geom"=>$geom]);
$_item=$q->toList()[0];
if(preg_match("/(\d*\.\d* \d*\.\d*)/",$_item->geom,$m)){
     $item->location=$m[1];
}else{
     $item->location="0 0";
}
Table->save($item);

ST_AsText関数については本家Doc
このへんをモデルのなんかのライフサイクルコールバックに突っ込むといいんだろう。だが暑いのでここまで!

ただしPHPUnitでのアクセスは失敗する。
今回はWebAppでGeometryデータを入力したりはしないので、CREATE TABLEnullableにして逃げた。

https://stackoverflow.com/questions/44807874/use-phpunit-cakephp-fixtures-with-point-type


検索キーワード:

記事

カテゴリ

Amazon | Android | apache | Arduino | bash | bluetooth | Books | CakePHP | CakePHP3 | CakePHP4 | Chrome | Chromebook | CodeIgniter | CSS | Docker | Eclipse | Emacs | etc | Firefox | Flask | Gadget | git | Gnome | Google | Heroku | HTML | hugo | Internet | iPhone | IS01 | IS03 | Java | JavaScript | json | Kotlin | Laravel | LINE | magento | mysql | nginx | nodejs | Oops | PC | Perl | php | Python | Qt | Ruby | ruby | Shell | ssh | tdiary | twitter | ubuntu | unix | VirtualBox | Web | Windows | windows | WindowsMobile | WX5 | YAML | zsh | ここか | そば | つくる | つり | できごと | アクアリウム | ギター | セキュリティ | プリンタ | ベース | ボクシング | ポエム | マネー | メシ | ラズパイ | 仕事 | 作家 | 壮絶 | 妄想 | 忘れる | 料理 | | 暑い | 痛い | 社会 | 自転車 | | 車輪 | | 野球 | 銭湯 | 音楽 |

全部 : / 今日 :

近頃

links

profile

もっとヒゲ伸ばしたい。