public function data__protein_sequence::load
3.x data__protein_sequence.inc | public data__protein_sequence::load($entity) |
Overrides TripalField::load
See also
File
- tripal_chado/
includes/ TripalFields/ data__protein_sequence/ data__protein_sequence.inc, line 75
Class
Code
public function load($entity) {
$field_name = $this->field['field_name'];
$feature = $entity->chado_record;
$num_seqs = 0;
// Set some defauls for the empty record
$entity->{$field_name}['und'][0] = array(
'value' => '',
);
// Look for protein sequences based on the relationship of this field.
$sql = "
SELECT F.*
FROM {feature_relationship} FR
INNER JOIN {feature} F on FR.subject_id = F.feature_id
INNER JOIN {cvterm} CVT on CVT.cvterm_id = F.type_id
INNER JOIN {cvterm} RCVT on RCVT.cvterm_id = FR.type_id
WHERE
FR.object_id = :feature_id and
CVT.name = 'polypeptide' and
RCVT.name = 'derives_from'
ORDER BY FR.rank ASC
";
$proteins = chado_query($sql, array(':feature_id' => $feature->feature_id));
while ($protein = $proteins->fetchObject()) {
$entity->{$field_name}['und'][$num_seqs]['value'] = $protein->residues;
// Because we'll be saving a feature we need to maintain all of it's
// columns in the feature table. The following will add them all.
$columns = get_object_vars($protein);
foreach ($columns as $colname => $value) {
$entity->{$field_name}['und'][$num_seqs]['chado-feature__' . $colname] = $value;
}
$num_seqs++;
}
}