2016-04-26 1 views
2

Je crée une API REST en utilisant FuelPHP et son ORM, docs trouvé ici: http://fuelphp.com/docs/packages/orm/crud.htmlRetour _data tableau à partir ORM avec FuelPHP

je peux retourner un objet de la ligne de base de données comme ceci:

$entry = Model_V1_Inventory::find(1);

Cela me renvoie l'objet où le PK est égal à 1, ce qui est comme prévu. Comment puis-je accéder au tableau _data à json_encode et le renvoyer dans le cadre de la réponse REST? Je peux accéder à des éléments individuels dans le tableau en appelant simplement:

$entry->product_ref 

À titre d'exemple, mais je ne vois pas de toute façon de retourner le tableau _data avec elle protégée.

Le retour opposé de l'ORM:

Model_V1_Inventory Object 
(
    [_is_new:protected] => 
    [_frozen:protected] => 
    [_sanitization_enabled:protected] => 
    [_data:protected] => Array 
     (
      [product_ref] => from the model 
      [cost_price] => 0.99 
      [rrp_price] => 11.67 
      [current_price] => 5.47 
      [description] => test description 
      [created_at] => 2016-04-26 14:29:20 
      [updated_at] => 2016-04-26 14:29:20 
      [id] => 1 
     ) 

    [_custom_data:protected] => Array 
     (
     ) 

    [_original:protected] => Array 
     (
      [product_ref] => from the model 
      [cost_price] => 0.99 
      [rrp_price] => 11.67 
      [current_price] => 5.47 
      [description] => test description 
      [created_at] => 2016-04-26 14:29:20 
      [updated_at] => 2016-04-26 14:29:20 
      [id] => 1 
     ) 

    [_data_relations:protected] => Array 
     (
     ) 

    [_original_relations:protected] => Array 
     (
     ) 

    [_reset_relations:protected] => Array 
     (
     ) 

    [_disabled_events:protected] => Array 
     (
     ) 

    [_view:protected] => 
    [_iterable:protected] => Array 
     (
     ) 

) 

Répondre

0

Ok après un jeu que je trouve une solution pour cela avec l'un des FuelPHP construit dans les classes, Format;

Format::forge($entry)->to_array(); 

Effectuer la conversion, puis json_encode le tableau pour la réponse. Voici toute ma méthode pour envoyer une chaîne codée JSON à l'utilisateur en utilisant la FuelPHP ORM:

public function get_product() 
{ 
    $product_id = Uri::segment(4); 
    $response = new Response(); 
    try{ 
     if($product_id == null){ 
      throw new Exception('No product ID given'); 
     }else{ 
      $entry = Model_V1_Inventory::find($product_id); 
      $entry = Format::forge($entry)->to_array(); 

      $response->body(json_encode($entry)); 
      $response->set_status(200); 
      return $response; 
     }     
    }catch(Exception $e){ 
     $response->body(json_encode(['Status' => 400, 'Message' => $e->getMessage()])); 
     $response->set_status(400); 
     return $response; 
     throw new Exception($e); 
    } 
}