0
私は、次のエンティティのフィールドを得た:symfonyのシリアライザを返す文字列の代わりに配列
/**
* @var array
*
* @ORM\Column(name="field", type="array", length=65535, nullable=true)
*/
private $field;
/**
* Set field
*
* @param array $field
*
* @return array
*/
public function setField($field)
{
$this->field= $field;
return $this;
}
/**
* Get field
*
* @return array
*/
public function getField()
{
return $this->field;
}
私は次のフィールドでJSONを受け取る:
{"field":["9031234567,9031234568,9031234569"]}
とsymfonyのシリアライザのコードを使用します。
$filter = $em->getRepository('AppBundle:Filter')->findOneBy(['id' => $id]);
$encoders = array(new XmlEncoder(), new JsonEncoder());
$normalizers = array(new ObjectNormalizer());
$serializer = new Serializer($normalizers, $encoders);
$serializer->deserialize($_POST['data'], Filter::class, 'json', array('object_to_populate' => $filter));
$em->persist($filter);
$em->flush();
フィールドをフィルタエンティティに保存します。それを修正する方法任意のアイデア
a:3:{i:0;d:9031234567;i:1;d:9031234568;i:2;d:9031234569;} //every number saved in a separate string
:私はこれを必要としながら、
a:1:{i:0;s:32:"9031234567,9031234568,9031234569";} //saved as 1 string
:問題は私のDBに私はこれを取得することですか?ありがとうございました。
UPD私のシリアライザは、次の値を返します。
["field":"AppBundle\Entity\Filter":private]=>
array(1) {
[0]=>
string(64) "903255, 345345, 46546, 46546, 46546, 46546, 46546, 46546,
46546,"
そして、$ serializer-> deserialize()が呼び出された私のコードで、このaddField()メソッドを使う方法は? – Jack
回答が更新されました。 – Viktor
デシリアライザの返品について教えてください。 – Viktor