2010-12-03 73 views
0

Pouvez-vous donner des conseils sur la façon de résoudre l'erreur suivante:kohana - ErrorException [Erreur fatale]: Impossible d'utiliser l'objet de type modèle sous forme de tableau

ErrorException [ Fatal Error ]: Cannot use object of type Model_Branch as array

S'il vous plaît voir le contrôleur:


public function action_view($agent_id='') { 
     $agent = ORM::factory('agent', $agent_id); 

     if ($agent->loaded()) { 

      $values = $agent->as_array(); 
      $branches = $agent->branches->find_all()->as_array(); 

      // Show page 
      $this->template->title = $agent->company_name; 
      $this->template->content = View::factory('agent/view') 
        ->bind('title', $this->template->title) 
        ->bind('values', $values) 
        ->bind('branches', $branches); 
     } else { 
      Request::instance()->redirect('agent'); 
     } 
    } 
+0

Veuillez montrer les lignes où le lancement d'exception. On dirait que ce n'est pas Controller, mais View. – biakaveron

Répondre

0

Vous n'avez pas vraiment besoin de as_array() ici. Les objets Database_Result se comportent comme des tableaux par défaut, vous pouvez y faire foreach ($branches as $b) echo $b->id sans même les convertir en tableau;

Database_Result implements Countable, Iterator, SeekableIterator, ArrayAccess 

La seule utilisation actuelle de la méthode Database_Result :: as_array() serait pour générer des tableaux clés => val, comme je l'ai souligné here. Vous ne pouvez actuellement pas convertir cela en tableau de résultats de base de données, bien qu'il soit seems logical at first.

+0

merci kemo qui l'a fixé. Fait disparaître avec as_array – drs

0

Je voudrais essayer ceci:

$branches = $agent->branches->find_all(); 
$branches = $branches->as_array(); 

Cela pourrait fonctionner, parfois vous devez déclarer avant de le transformer.