->getLinks() -- Charge des objets relatifs
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.
Paramètres
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 34-1. 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'); |
|
Valeur retournée
boolean - TRUE en cas de succès, FALSE si une erreur survient.
Note
Cette fonction ne peut pas être appelée de façon statique.
Exemple
Exemple 34-2. 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) | | | | |
+----------------------+---------------+------+-----+---------+----------------+ |
|
Exemple 34-5. 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] => tim@example.com
[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 34-6. Exemple avec une jointure sur trois tables /**
* 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); |
|
Exemple 34-7. 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 |
|