6

saveAll() を使用して CakePHP に空間データを保存する際に問題があります。保存されているモデルの数があるため、クエリを手動で記述したくありません ( CakePHP での空間データの処理)。

また、このCakePHP と MySQL Spatial Extensionを読みましたが、同じことをしようとすると$db->expression()、stdClass が返されます。

これは、出力された返されたオブジェクトです。

stdClass Object
(
    [type] => expression
    [value] => GeomFromText('POINT(48.18879 18.527579999999944)')
)

このオブジェクトをCakePHP および MySQL Spatial Extensionで使用されている方法で使用し、saveAll() で保存しようとすると、次のエラーが発生します。

エラー: タイプ stdClass のオブジェクトを配列として使用できません
ファイル: /www/s/t/u47728/public_html/lib/Cake/Model/Model.php
行: 2221

value プロパティを使用すると、クエリでエスケープされるため、単なる文字列になります。次に、次のエラーが表示されます。

エラー: SQLSTATE[22003]: 範囲外の数値: 1416 GEOMETRY フィールドに送信したデータからジオメトリ オブジェクトを取得できません

saveAll() は式をサポートしていますか?

アップデート

どうやら同じことがsave()関数などにも当てはまります....またsaveField()

4

2 に答える 2

2

データの順序も変更する必要があります。

正しい方法は: POINT(緯度経度)

評判が十分でないため、正しい答えについてコメントできませんでした。

于 2014-11-26T11:57:41.340 に答える