Yanıtlar:
entity_load
Varlığı @Nikhil tarafından belirtildiği gibi yüklemek için kullanın .
Sonra paketi çıkarmak için entity_extract_ids komutunu kullanın . Misal:
$entity = entity_load('node', array('7'));
list(, , $bundle) = entity_extract_ids('node', $entity);
echo "Bundle name is : " . $bundle;
İşlev entity_extract_ids
, öğeleri içeren sayısal olarak dizine alınmış bir diziyi (karma tablosu değil) döndürür:
burada, 0
, 1
ve 2
dizi indeksleri vardır. Ancak, çekirdek ve katkı modülleri tarafından kullanılan yaklaşım list()
işlevi kullanmaktır .
list($id, $vid, $bundle) = entity_extract_ids($entity_type, $entity);
İşte en temiz ben modül kod Organik gruplarından var şu.
$wrapper = entity_metadata_wrapper($entity_type, $entity_id);
$bundle = $wrapper->getBundle();
Örneğin şöyle diyebilirim:
$wrapper = entity_metadata_wrapper('node', 1);
$bundle = $wrapper->getBundle();
Düzenleme: @Clive belirttiği gibi, yukarıdaki yöntem varlık modülüne bağlıdır.
İşte herhangi bir ekstra modüle bağlı olmayan başka bir yöntem. Burada açıklanmıştır https://forrst.com/posts/Get_the_bundle_of_a_Drupal_7_entity-0xW
Bu yöntemi yapıştırarak kopyalayın:
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
? ve değeri $bundle
nedir?
entity_load
şekilde, en temiz nasıl da yapabilirsiniz?
entity_metadata_wrapper()
daha temiz olduğunu düşünmüyorum entity_extract_ids()
. Ayrıca kurulmakta olan varlık modülüne güveniyorsunuz ...
Varlık_yüklemeyi deneyin
Varlıkları veritabanından yükleyin.
Varlıklar statik bellek önbelleğinde saklanır ve aynı sayfa isteği sırasında tekrar yüklenirse veritabanı erişimi gerektirmez.
$ entity_type : Yüklenecek varlık türü, örneğin düğüm veya kullanıcı.
$ ids : Bir varlık kimlikleri dizisi veya tüm varlıkları yüklemek için FALSE.
$ koşullar : (kullanımdan kaldırıldı) Temel tabloda, anahtarların veritabanı alanları ve değerlerin bu alanların sahip olması gereken değerler olduğu ilişkilendirilebilir bir koşullar dizisi. Bunun yerine, bu işlev tarafından yüklenebilen varlık kimliklerinin bir listesini almak için EntityFieldQuery kullanılması tercih edilir.
$ reset : İstenen varlık türü için dahili önbelleğin sıfırlanıp sıfırlanmayacağı.
Kimliklerine göre dizine eklenen varlık nesneleri dizisi. Hiçbir sonuç bulunmadığında boş bir dizi döndürülür.
Düğüm kimliğinden düğüm türünü almak için performans açısından çok hafif bir yol istiyorsanız - düğüm tablosunda tek bir seçme sorgusu kullanabilirsiniz.
$type = db_query("SELECT type FROM {node} WHERE nid = :nid",
array(':nid' => $nid))->fetchField();
Bu şekilde, tüm varlık kanca sistemini entity_load vb. İle çağırmanız gerekmez.
Dizinlenmiş düğüm kimliğini kullanan tek bir seçme sorgusudur.