Entity object to array

I stored in session object entity, is it possible to convert this object back to an array?
Because the patch entity does not merge the data.

$data = [
    'id' => 1,
    'users_documents_items' => $ContentArray['users_documents_items'], **<< this is object entity, if it array - patch entity works, if entity object, doestn patch entity...**
$ContentUserDocument = $this->UsersDocuments->newEmptyEntity();
$ContentUserDocument = $this->UsersDocuments->patchEntity($ContentUserDocument, $data, [
    'associated' => ['UsersDocumentsItems']

Thank you!

There is a toArray() method available for entities.


If applicate to


it doesnt work… (Call to a member function toArray() on array)

This variable from session looks like this

	(int) 0 => object(App\Model\Entity\UsersDocumentsItem) {

		'name' => 'test',
		'type' => 'black',
            ... etc
	(int) 1 => object(App\Model\Entity\UsersDocumentsItem) {
   ... etc

This is works, but get only one item…


Is it possible to get all the records in the array? No object?

If you’re trying to do more than one entity:


note the plural ‘Entities’

Its doesnt works, because the array has nested entity objects. If I insert a clean array without an object, it works … so I need to convert an array with entity objects to a clean array.

The solution to how to do this is as follows:

foreach($ContentArray['users_documents_items'] as $arr) {
    $arr2[] = $arr->toArray();

Is there any other solution to the internal function of phpcake?

Loop through your containing array and array-ify each object. Then you will have an array of arrays.

Use any php loop structure you want; foreach, for, while… or use Cake’s Collection::map or Collection::reduce.


1 Like

Thank you very much!