エンティティをエンコードする際に、末尾にスラッシュ理由:JSON配列 -
//...
/**
* @ORM\Column(type="json_array", nullable=true)
*/
protected $params = null;
function setParams($params)
{
$this->params = $params; //json_encode($params);
}
とフォームタイプ:
//...
->add('params', null, array(
'required' => false,
))
だから、何も珍しいです。上のコードは正しく動作します。しかし、setParamsメソッドの行を "json_encode($ params);に変更すると(右のPHPのコメントを参照)、私はDB内の後続のスラッシュを取得しています(私はvarをダンプするとき、DBに格納する前に大丈夫です)。そして、それはDBでのみ間違っていて、私がそれをエンコードしようとするときだけです。興味深いことに、配列をsetParamsに直接渡すだけで十分です。Doctrineはそれを正しく保存します...
誰かが私の理由を説明できますか?
「悪い」データを*記述する代わりに、代わりに例をコピー/貼り付けする方法はありますか? – Sammitch
@Sammitch問題に直接関連するコードだけを入力しないと、そのポイントがぼやけます。 – forsberg
私は@Sammitchに同意します。これらの後続のスラッシュの例がデータベースで発生しているのを見てみたいと思います。私はあなたが 'json_array'として列の型を定義して以来、自分でデータを' json_encode() 'するといくつかのダブルエンコーディングが起こっていると思っています。しかし、それを確認するために、間違ったデータの例を見る必要があります。 – rickdenhaan