私は同じ問題に直面しています。 Doctrineオブジェクトをシリアライズするためのより良い解決策を待っています。 Iアレイに教義オブジェクトを変換するコード[配列==> JSON]
<?php
use Doctrine\ORM\PersistentCollection;
class MyDoctrineEntity
{
public function arrayFy($level=1 ,array $ignore=array()){
$maxLevel=3;
$dateFormat='Y-m-d H:i:s';
if(is_array($level)){
$ignore=$level;
$level=1;
}
$level=$level>$maxLevel?$maxLevel:$level;
$arr=array();
foreach($this as $key=>$val){
if(in_array($key ,$ignore))
continue;
elseif(is_bool($val)|| is_int($val)||is_string($val)||is_null($val)|| is_float($val))
$arr[$key]=$val;
elseif($val instanceof \DateTime)
$arr[$key]=$val->format($dateFormat);
elseif($val instanceof PersistentCollection && $level>0)
{
$childArr=array();
if(count($val))
foreach($val as $x)
$childArr[]=$x->arrayFy($level-1,$ignore);
$arr[$key]=$childArr;
}elseif($key!='_entityPersister'&&$key!='_identifier'&&$key!='__isInitialized__' && !($val instanceof PersistentCollection))
$arr[$key]=$val->arrayFy($level-1,$ignore);
}
return $arr;
}
}
/**
* @Entity
* @Table(name="user")
*/
class User extends MyDoctrineEntity
{
を教義のエンティティを作成しながら、このクラスを拡張し、アレイ
$user->arrayFy(); //
$user->arrayFy(2); // how deep you want to print ; default value : 1 , max value:3
$user->arrayFy(array('created_by','salary')); // columns that you dont want to store
$user->arrayFy(1,arra('created_by'));
に教義を変換するために書かれています
あなたは 'serialize($ object);'を試したことがありますか? – RobinJ
シンプルなシリアライズの下でCobbyが指摘しているように動作しません。残念ながら。 – herrjeh42
@ jamie0726 [それは](http://docs.doctrine-project.org/projects/doctrine-orm/en/2.1/cookbook/implementing-wakeup-or-clone.html) – undefined