Converti object laravel in arrays

Uscita Laravel:

Array ( [0] = stdClass Object ( [ID] = 5 ) [1] = stdClass Object ( [ID] = 4 ) ) 

Voglio convertirlo in un arrays normale. Voglio solo rimuovere stdClass Object . Ho anche provato a usare ->toArray(); ma ottengo un errore:

Chiamare a una function membro toArray () su un non object.

Come posso risolvere questo?

Le funzionalità sono state implementate su http://www.srihost.com

Puoi cambiare la tua configuration di db, come suggerito da @Varun, o se vuoi farlo solo in questo caso, allora:

 DB::setFetchMode(PDO::FETCH_ASSOC); // then DB::table(..)->get(); // arrays of arrayss instead of objects // of course to revert the fetch mode you need to set it again DB::setFetchMode(PDO::FETCH_CLASS); 
 foreach($yourArrayName as $object) { $arrayss[] = $object->toArray(); } // Dump arrays with object-arrayss dd($arrayss); 

Oppure quando toArray() fallisce perché è un stdClass

 foreach($yourArrayName as $object) { $arrayss[] = (arrays) $object; } // Dump arrays with object-arrayss dd($arrayss); 

Non funziona? Forse puoi trovare la tua risposta qui:

Converti object PHP in arrays associativo

Puoi anche get tutti i risultati sempre come arrays cambiando

 // application/config/database.php 'fetch' => PDO::FETCH_CLASS, // to 'fetch' => PDO::FETCH_ASSOC, 

Spero che questo ti sia d'aiuto.

questo ha funzionato per me:

 $data=DB::table('table_name')->select(.......)->get(); $data=arrays_map(function($item){ return (arrays) $item; },$data); 

o

 $data=arrays_map(function($item){ return (arrays) $item; },DB::table('table_name')->select(.......)->get()); 

È necessario scorrere l'arrays

 for ($i = 0, $c = count($arrays); $i < $c; ++$i) { $arrays[$i] = (arrays) $arrays[$i]; } 

conversione ans usa (arrays) perché hai una matrix di oggetti della class Std e non oggetti stessi

Esempio:

 $users = DB::table('users')->get(); var_dump($users); echo "<br /><br />"; for ($i = 0, $c = count($users); $i < $c; ++$i) { $users[$i] = (arrays) $users[$i]; } var_dump($users); exit; 

L'output per questo è:

 arrays(1) { [0]=> object(stdClass)#258 (8) { ["id"]=> int(1) ["user_name"]=> string(5) "admin" ["email"]=> string(11) "[email protected]" ["passwd"]=> string(60) "$2y$10$T/0fW18gPGgz0CILTy2hguxNpcNjYZHsTyf5dvpor9lYMw/mtKYfi" ["balance"]=> string(4) "0.00" ["remember_token"]=> string(60) "moouXQOJFhtxkdl9ClEXYh9ioBSsRp28WZZbLPkJskcCr0325TyrxDK4al5H" ["created_at"]=> string(19) "2014-10-01 12:00:00" ["updated_at"]=> string(19) "2014-09-27 12:20:54" } } arrays(1) { [0]=> arrays(8) { ["id"]=> int(1) ["user_name"]=> string(5) "admin" ["email"]=> string(11) "[email protected]" ["passwd"]=> string(60) "$2y$10$T/0fW18gPGgz0CILTy2hguxNpcNjYZHsTyf5dvpor9lYMw/mtKYfi" ["balance"]=> string(4) "0.00" ["remember_token"]=> string(60) "moouXQOJFhtxkdl9ClEXYh9ioBSsRp28WZZbLPkJskcCr0325TyrxDK4al5H" ["created_at"]=> string(19) "2014-10-01 12:00:00" ["updated_at"]=> string(19) "2014-09-27 12:20:54" } } 

come previsto. L'object di stdClass è stato convertito in arrays.

Ti suggerisco di farlo semplicemente nel tuo metodo

 public function MyAwesomeMethod($returnQueryAs = null) { $tablename = 'YourAwesomeTable'; if($returnQueryAs == 'arrays') { DB::connection()->setFetchMode(PDO::FETCH_ASSOC); } return DB::table($tablename)->get(); } 

Con questo tutto ciò che serve è passare la string 'arrays' come argomento e Voila! Viene restituito un arrays associativo.

Se vuoi get solo l'ID nell'arrays, puoi usare arrays_map:

  $data = arrays_map(function($object){ return $object->ID; }, $data); 

Con ciò, restituisci un arrays con ID in each posizione.