->getLinks()
Prev Next

->getLinks()

->getLinks() – Charge des objets relatifs

Synopsis

boolean $DB_DataObject->getLinks ( string $variableFormat )

Description

Charge tous les objets relatifs dans l'objet principal, en utilisant les relations du fichier links.ini, et définit les variables de l'objet appelé avec le nom de la ligne préfixée avec un underscore (_) dans l'objet résultant.

L'utilisation de cette méthode avec la convention de nommage des colonnes est obsolète ; les fichiers links.ini doivent être utilisés à la place.

Parameter

  • string $variableFormat - le comportement par défaut est d'assigner les objets résultants aux variables, avec le nom des lignes préfixé avec un underscore (_), cependant, vous pouvez utiliser cette valeur pour fomatter la variable différemment

    Exemple de formattage

    
    Si room.occupied_by est lié à person.id
    
    sans modificateur - e.g. _%s
    
    Les résultats dans l'équivalent de
    $object->_occupied_by =  $object->getLink('occupied_by');
    
    avec un modificateur - e.g. link_%s 
    
    Les résultats dans l'équivalent de
    $object->link_occupied_by = $object->getLink('occupied_by');

Return value

boolean - TRUE en cas de succès, FALSE si une erreur survient.

Note

This function can not be called statically.

See

DB_DataObject::getLink()

Example

Exemple avec deux tables


Person
+---------------+---------------+------+-----+---------+----------------+
| Field         | Type          | Null | Key | Default | Extra          |
+---------------+---------------+------+-----+---------+----------------+
| id            | mediumint(9)  |      | PRI | 0       | auto_increment |
| first_name    | varchar(80)   | YES  |     | NULL    |                |
| last_name     | varchar(80)   |      | MUL |         |                |
| middle_name   | varchar(80)   | YES  |     | NULL    |                |
| badge_number  | smallint(6)   | YES  |     | NULL    |                |
| street        | varchar(80)   | YES  |     | NULL    |                |
| city          | varchar(80)   | YES  |     | NULL    |                |
| state         | varchar(80)   | YES  |     | NULL    |                |
| zip           | varchar(15)   | YES  |     | NULL    |                |
| phone         | varchar(15)   | YES  |     | NULL    |                |
| reg_type      | varchar(80)   | YES  |     | NULL    |                |
| judge         | varchar(10)   | YES  |     | NULL    |                |
| staff         | varchar(10)   | YES  |     | NULL    |                |
| volunteer     | varchar(10)   | YES  |     | NULL    |                |
| rpga_number   | mediumint(9)  | YES  |     | NULL    |                |
| total_fee     | float(10,2)   | YES  |     | NULL    |                |
| email_address | varchar(80)   | YES  |     | NULL    |                |
| country       | varchar(30)   | YES  |     | NULL    |                |
| convention_id | int(11)       |      |     | 0       |                |
| last_modified | timestamp(14) | YES  |     | NULL    |                |
+---------------+---------------+------+-----+---------+----------------+

Convention
+----------------------+---------------+------+-----+---------+----------------+
| Field                | Type          | Null | Key | Default | Extra          |
+----------------------+---------------+------+-----+---------+----------------+
| id                   | int(11)       |      | PRI | 0       | auto_increment |
| name                 | varchar(50)   |      |     |         |                |
| sponsor_organization | varchar(50)   |      |     |         |                |
| rpga_convention_code | varchar(20)   |      |     |         |                |
| web_site_url         | varchar(200)  |      |     |         |                |
| last_modified        | timestamp(14) | YES  |     | NULL    |                |
| room_id              | int(11)       |      |     |         |                |
+----------------------+---------------+------+-----+---------+----------------+

Room
+----------------------+---------------+------+-----+---------+----------------+
| Field                | Type          | Null | Key | Default | Extra          |
+----------------------+---------------+------+-----+---------+----------------+
| room_id              | int(11)       |      | PRI | 0       | auto_increment |
| name                 | varchar(50)   |      |     |         |                |
+----------------------+---------------+------+-----+---------+----------------+

Chargement de tous les objets relatifs

<?php
$person 
= new DataObjects_Person;
$person->get(1079);
$person->getLinks();
print_r($person);
?>

SQL résultant


SELECT * FROM person WHERE id=1079
SELECT * FROM convention WHERE id=1

Affichage résultant


Object:dataobjects_person Object
(
   [_DB_DataObject_version] => 1.0
   [__table] => person
   [_database_dsn] =>
   [_database_dsn_md5] => 3974043abbccdd6412fb156a1d10b98377
   [_database] => testing
   [_condition] =>
   [_group_by] =>
   [_order_by] =>
   [_limit] =>
   [_data_select] => *
   [_link_loaded] => 1
   [_lastError] => pear_error Object
   (
      [error_message_prefix] =>
      [mode] => 1
      [level] => 1024
      [code] => -3
      [message] => getLink:Could not find class for row last_modified, table last
      [userinfo] =>
      [callback] =>
   )

   [id] => 1079
   [N] => 1
   [_DB_resultid] => 2
   [first_name] => Tim
   [last_name] => White
   [middle_name] =>
   [badge_number] => 123
   [street] => 334411 N Washington
   [city] => Texas
   [state] => CO
   [zip] => 12345
   [phone] => 343412323232
   [reg_type] => Staff
   [judge] =>
   [staff] => CHECKED
   [volunteer] =>
   [rpga_number] => 1232323
   [total_fee] => 0.00
   [email_address] => [email protected]
   [country] => USA
   [convention_id] => 1
   [last_modified] => 20020711084539
   [_first_name] =>
   [_last_name] =>
   [_middle_name] =>
   [_badge_number] =>
   [_reg_type] =>
   [_rpga_number] =>
   [_total_fee] =>
   [_email_address] =>
   [_convention_id] => dataobjects_convention Object
   (
      [_DB_DataObject_version] => 1.0
      [__table] => convention
      [_database_dsn] =>
      [_database_dsn_md5] => 3974043abbcc86412fb156a1d10b98377
      [_database] => testing
      [_condition] =>
      [_group_by] =>
      [_order_by] =>
      [_limit] =>
      [_data_select] => *
      [_link_loaded] =>
      [_lastError] =>
      [id] => 1
      [N] => 1
      [_DB_resultid] => 3
      [name] => ABCD XYZ
      [sponsor_organization] => some sponser
      [rpga_convention_code] => ABCD_XYZ
      [web_site_url] => http://example.com
      [last_modified] => 20020703143828
      [room_id] => 1
   )

   [_last_modified] =>
)

** Note : Cette erreur : [message] => getLink:Could not find class for row last_modified, table last
est causé par le code du lien original utilisant {tablename}_{colname} pour la demande des liens,
ce liage automatique devrait être ignoré et ne devrait pas être utilisé, il est obsolète.

Exemple avec une jointure sur trois tables

<?php
/**
* L'exemple suivant montre une jointure sur trois tables
*
*/
$person = new DataObjects_Person;

$data = array();
if (
$person->find()) {
   while (
$person->fetch()) {
      
$person->getLinks();
      
// Ce qui suit est un autre appel à getLinks pour la seconde jointure
      
$person->_convention_id->getLinks();
      
$data[] = $person->_convention_id->_room_id->ToArray();
   }
}

print_r($data);
?>

databasename.links.ini


; ce fichier ini est pour l'exemple de jointure sur trois tables, ci-dessus
[person]
person_id = convention:person_id

[room]
room_id = convention:room_id

Prev DB_DataObject Next
->getLink() PEAR Manual ->selectAs()