Antworten:
Verwenden Sie entity_load
diese Option, um die Entität wie von @Nikhil erwähnt zu laden.
Verwenden Sie dann entity_extract_ids , um das Bundle zu extrahieren. Beispiel:
$entity = entity_load('node', array('7'));
list(, , $bundle) = entity_extract_ids('node', $entity);
echo "Bundle name is : " . $bundle;
Die Funktion entity_extract_ids
gibt ein numerisch indiziertes Array (keine Hash-Tabelle) zurück, das die folgenden Elemente enthält:
wobei, 0
, 1
, und 2
sind Array - Indizes. Der Ansatz der Core- und Contrib-Module besteht jedoch darin, die list()
Funktion zu verwenden.
list($id, $vid, $bundle) = entity_extract_ids($entity_type, $entity);
Hier ist die sauberste , die ich aus dem Modulcode für organische Gruppen erhalten habe.
$wrapper = entity_metadata_wrapper($entity_type, $entity_id);
$bundle = $wrapper->getBundle();
Zum Beispiel kann ich es so nennen:
$wrapper = entity_metadata_wrapper('node', 1);
$bundle = $wrapper->getBundle();
Bearbeiten: Wie @Clive hervorhob, hängt die obige Methode vom Entitätsmodul ab.
Hier ist eine andere Methode, die nicht von einem zusätzlichen Modul abhängt. Es wird hier erklärt https://forrst.com/posts/Get_the_bundle_of_a_Drupal_7_entity-0xW
Kopieren Sie das Einfügen dieser Methode:
function _entity_get_bundle($entity, $entity_type) {
$info = entity_get_info($entity_type);
if (empty($info['entity keys']['bundle'])) {
return $entity_type;
} else {
return $entity->{$info['entity keys']['bundle']};
}
}
$group_type, $gid
? und was ist der Wert in $bundle
?
entity_load
, übrigens, wie es am saubersten ist?
entity_metadata_wrapper()
es sauberer ist als die entity_extract_ids()
Methode. Außerdem verlassen Sie sich darauf, dass das Entitätsmodul installiert wird ...
Versuchen Sie entity_load
Laden Sie Entitäten aus der Datenbank.
Die Entitäten werden in einem statischen Speichercache gespeichert und erfordern keinen Datenbankzugriff, wenn sie während derselben Seitenanforderung erneut geladen werden.
$ entity_type : Der zu ladende Entitätstyp, z. B. Knoten oder Benutzer.
$ ids : Ein Array von Entitäts-IDs oder FALSE zum Laden aller Entitäten.
$ Bedingungen : (veraltet) Ein assoziatives Array von Bedingungen in der Basistabelle, wobei die Schlüssel die Datenbankfelder und die Werte die Werte sind, die diese Felder haben müssen. Stattdessen ist es vorzuziehen, EntityFieldQuery zu verwenden, um eine Liste von Entitäts-IDs abzurufen, die von dieser Funktion geladen werden können.
$ reset : Gibt an, ob der interne Cache für den angeforderten Entitätstyp zurückgesetzt werden soll.
Ein Array von Entitätsobjekten, die durch ihre IDs indiziert sind. Wenn keine Ergebnisse gefunden werden, wird ein leeres Array zurückgegeben.
Wenn Sie in Bezug auf die Leistung eine sehr einfache Methode zum Abrufen des Knotentyps aus der Knoten-ID wünschen, können Sie eine einzelne Auswahlabfrage für die Knotentabelle verwenden.
$type = db_query("SELECT type FROM {node} WHERE nid = :nid",
array(':nid' => $nid))->fetchField();
Auf diese Weise müssen Sie nicht das gesamte Entity-Hook-System mit entity_load usw. aufrufen.
Es handelt sich um eine einzelne Auswahlabfrage unter Verwendung der indizierten Knoten-ID.