2014-05-22 7 views
1

Je viens d'ajouter PHP ActiveRecord à mon installation de CodeIgniter. Je cours quelques tests maintenant et suis très confus par quelques choses. J'ai une table de produits dans une base MySQL, et quand je l'utilise ActiveRecord pour récupérer la première ligne de la table, c'est la sortie que je reçois:PHP ActiveRecord dans le champ CodeIgniter et mysql datetime

Product Object 
(
    [errors] => 
    [attributes:ActiveRecord\Model:private] => Array 
     (
      [id] => 1 
      [ext_id] => 347 
      [ext_type_id] => 1 
      [sku] => SYB-RIU-SUP 
      [url] => http://domain.com 
      [name] => SUP Wall Storage Rack 
      [thumbnail_url] => https://thumburl.com 
      [sort_order] => 20 
      [profitability] => 40 
      [last_google_update] => ActiveRecord\DateTime Object 
       (
        [model:ActiveRecord\DateTime:private] => Product Object 
*RECURSION* 
        [attribute_name:ActiveRecord\DateTime:private] => last_google_update 
        [date] => 2014-05-21 05:01:12 
        [timezone_type] => 3 
        [timezone] => UTC 
       ) 

      [last_internal_update] => 
      [discontinued] => 0 
      [stock_notes] => 
      [deleted] => 0 
      [created_on] => ActiveRecord\DateTime Object 
       (
        [model:ActiveRecord\DateTime:private] => Product Object 
*RECURSION* 
        [attribute_name:ActiveRecord\DateTime:private] => created_on 
        [date] => 2014-03-25 22:31:58 
        [timezone_type] => 3 
        [timezone] => UTC 
       ) 

     ) 

    [__dirty:ActiveRecord\Model:private] => Array 
     (
     ) 

    [__readonly:ActiveRecord\Model:private] => 
    [__relationships:ActiveRecord\Model:private] => Array 
     (
     ) 

    [__new_record:ActiveRecord\Model:private] => 
) 

Qu'est-ce que les lignes *RECURSION* signifient dans l'objet? Est-ce prévu ou est-ce un problème? De plus, disons que j'ai besoin pour accéder au champ last_google_update, je fais ce qui suit:

$product = Product::first(); 
$date = $product->last_google_update; 
print_r($date); 

Ce produit les éléments suivants:

ActiveRecord\DateTime Object 
(
    [model:ActiveRecord\DateTime:private] => Product Object 
     (
      [errors] => 
      [attributes:ActiveRecord\Model:private] => Array 
       (
        [id] => 1 
        [ext_id] => 347 
        [ext_type_id] => 1 
        [sku] => SYB-RIU-SUP 
        [url] => http://www.storeyourboard.com/sup-storage-rack.html 
        [name] => SUP Wall Storage Rack 
        [thumbnail_url] => https://cdn2.bigcommerce.com/server2100/6p8lmnk/products/347/images/2292/standup_paddle_board_rack__43491.1392317669.225.360.jpg?c=2 
        [sort_order] => 20 
        [profitability] => 40 
        [last_google_update] => ActiveRecord\DateTime Object 
*RECURSION* 
        [last_internal_update] => 
        [discontinued] => 0 
        [stock_notes] => 
        [deleted] => 0 
        [created_on] => ActiveRecord\DateTime Object 
         (
          [model:ActiveRecord\DateTime:private] => Product Object 
*RECURSION* 
          [attribute_name:ActiveRecord\DateTime:private] => created_on 
          [date] => 2014-03-25 22:31:58 
          [timezone_type] => 3 
          [timezone] => UTC 
         ) 

       ) 

      [__dirty:ActiveRecord\Model:private] => Array 
       (
       ) 

      [__readonly:ActiveRecord\Model:private] => 
      [__relationships:ActiveRecord\Model:private] => Array 
       (
       ) 

      [__new_record:ActiveRecord\Model:private] => 
     ) 

    [attribute_name:ActiveRecord\DateTime:private] => last_google_update 
    [date] => 2014-05-21 05:01:12 
    [timezone_type] => 3 
    [timezone] => UTC 
) 

Donc obtenir la date réelle, j'ai essayé ceci:

print_r($date->date); 

Cependant, cela donne l'erreur suivante:

<div style="border:1px solid #990000;padding-left:20px;margin:0 0 10px 0;"> 

<h4>A PHP Error was encountered</h4> 

<p>Severity: Notice</p> 
<p>Message: Undefined property: ActiveRecord\DateTime::$date</p> 
<p>Filename: controllers/test.php</p> 
<p>Line Number: 16</p> 

</div> 

Mais, si j'inclure un appel à get_active_vars() d'abord, cela fonctionne:

print_r(get_object_vars($date)) 
print_r($date->date); 

Sorties:

Array 
(
    [date] => 2014-05-21 05:01:12 
    [timezone_type] => 3 
    [timezone] => UTC 
) 
2014-05-21 05:01:12 

Pour résumer:

  1. -ce que les drapeaux *RECURSION* attendus?
  2. Comment puis-je utiliser les champs datetime et comment accéder aux dates réelles?

Répondre

0

RECURSION est pas bon defenetly
Je ne suis pas sûr mais

[model:ActiveRecord\DateTime:private] => Product Object 

vous avez en quelque sorte l'objet produit dans un dateTime et donc la classe en essayant d'analyser ce qui est pourquoi récursivité.

essayer de voir la configuration du module

0

solution est d'utiliser la fonction de format sur la propriété objet date.

$date->date->format('Y-m-d H:i:s')