У меня проблема с ArraySerializable гидратор и массивы. У меня есть этот код:ZR2 гидраторы и массивы
$users = array();
$produtos = array();
$ros = $this->roService->findAllEntities();
foreach ($ros as $ro) {
$users[] = $this->usuarioService->findEntity($ro->attributes['idUsuario']->attribute);
$produtos[] = $this->produtoService->findEntity($ro->attributes['idProduto']->attribute);
var_dump($produtos[0]->attributes);
}
Вот выход var_dump ($ Produtos [0] -> атрибуты) на две итерации:
array (size=3)
'id' =>
object(Application\Model\Attribute\Id)[307]
protected 'name' => string 'id' (length=2)
protected 'attribute' => string '2' (length=1)
protected 'validators' =>
array (size=0)
empty
'dataHoraCadastro' =>
object(Application\Model\Attribute\DataHoraCadastro)[308]
protected 'name' => string 'dataHoraCadastro' (length=16)
protected 'attribute' => string '2015-03-07 14:03:37' (length=19)
protected 'validators' =>
array (size=0)
empty
'nome' =>
object(Application\Model\Attribute\Nome)[309]
protected 'name' => string 'nome' (length=4)
protected 'validators' =>
array (size=1)
0 =>
object(Application\Validator\StringLengthValidator)[310]
...
protected 'minimoCaracteres' => int 3
protected 'maximoCaracteres' => int 70
protected 'attribute' => string 'Produto 1' (length=4)
array (size=3)
'id' =>
object(Application\Model\Attribute\Id)[307]
protected 'name' => string 'id' (length=2)
protected 'attribute' => string '4' (length=1)
protected 'validators' =>
array (size=0)
empty
'dataHoraCadastro' =>
object(Application\Model\Attribute\DataHoraCadastro)[308]
protected 'name' => string 'dataHoraCadastro' (length=16)
protected 'attribute' => string '2015-03-07 14:03:37' (length=19)
protected 'validators' =>
array (size=0)
empty
'nome' =>
object(Application\Model\Attribute\Nome)[309]
protected 'name' => string 'nome' (length=4)
protected 'validators' =>
array (size=1)
0 =>
object(Application\Validator\StringLengthValidator)[310]
...
protected 'minimoCaracteres' => int 3
protected 'maximoCaracteres' => int 70
protected 'attribute' => string 'Produto 2' (length=9)
$users
, $produtos
и $ros
являются массивы сущностей , Код findEntity и findAllEntities методы:
/**
* @inheritDoc
*/
public function findEntity($id) {
$result = $this->executeFindSql($id);
if ($result instanceof ResultInterface && $result->isQueryResult()) {
return $this->hydrator->hydrate($result->current(), $this->entity);
}
}
/**
* @inheritDoc
*/
public function findAllEntities() {
$result = $this->executeFindSql();
if ($result instanceof ResultInterface && $result->isQueryResult()) {
$resultSet = new HydratingResultSet($this->hydrator, $this->entity);
return $resultSet->initialize($result);
}
return array();
}
Проблема заключается в том, что $ Produtos и $ пользователей массивы имеют весь массив переписаны на вызов метода findEntity. Кажется, что на каждой итерации полный массив заменяется на последний объект. Затем на второй итерации индекс 0 массива $ produtos не имеет того же значения, что и в первой итерации ...
К концу цикла каждый элемент массива имеет последний объект. .очень странно. Заранее спасибо :)
Кто-нибудь, пожалуйста? :( – user3753202