そのまま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 TABLE
でnullable
にして逃げた。
https://stackoverflow.com/questions/44807874/use-phpunit-cakephp-fixtures-with-point-type
記事
カテゴリ
Amazon | Android | apache | Arduino | AWS | 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 | ここか | そば | つくる | つり | できごと | アクアリウム | ギター | セキュリティ | プリンタ | ベース | ボクシング | ポエム | マネー | メシ | ラズパイ | 仕事 | 作家 | 壮絶 | 妄想 | 忘れる | 料理 | 旅 | 暑い | 痛い | 社会 | 自転車 | 豚 | 車 | 車輪 | 酒 | 野球 | 銭湯 | 音楽 | 食
全部 : / 今日 :
近頃
profile