Jawaban:
Gunakan entity_load
untuk memuat entitas seperti yang disebutkan oleh @Nikhil.
Kemudian gunakan entitas_extract_ids , untuk mengekstrak bundel. Contoh:
$entity = entity_load('node', array('7'));
list(, , $bundle) = entity_extract_ids('node', $entity);
echo "Bundle name is : " . $bundle;
Fungsi entity_extract_ids
mengembalikan array yang diindeks secara numerik (bukan tabel hash) yang mengandung elemen:
di mana, 0
, 1
, dan 2
adalah indeks array. Namun, pendekatan yang digunakan oleh modul inti dan kontrib adalah dengan menggunakan list()
fungsi tersebut.
list($id, $vid, $bundle) = entity_extract_ids($entity_type, $entity);
Ini adalah yang terbersih yang saya dapatkan dari kode modul kelompok organik.
$wrapper = entity_metadata_wrapper($entity_type, $entity_id);
$bundle = $wrapper->getBundle();
Misalnya saya bisa menyebutnya seperti:
$wrapper = entity_metadata_wrapper('node', 1);
$bundle = $wrapper->getBundle();
Sunting: Seperti yang ditunjukkan oleh @Clive, metode di atas tergantung pada modul entitas.
Berikut adalah metode lain yang tidak bergantung pada modul tambahan apa pun. Dijelaskan di sini https://forrst.com/posts/Get_the_bundle_of_a_Drupal_7_entity-0xW
Salin menempelkan metode itu:
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
? dan apa nilainya $bundle
?
entity_load
, dengan cara bagaimana itu terbersih?
entity_metadata_wrapper()
lebih bersih dari entity_extract_ids()
metodenya. Ditambah lagi, Anda mengandalkan modul entitas yang sedang diinstal ...
Coba entitas_load
Memuat entitas dari database.
Entitas disimpan dalam cache memori statis, dan tidak akan memerlukan akses database jika dimuat lagi selama permintaan halaman yang sama.
$ entity_type : Jenis entitas yang akan dimuat, misal simpul atau pengguna.
$ Id : Array ID entitas, atau FALSE untuk memuat semua entitas.
$ conditions : (usang) Array asosiatif dari kondisi pada tabel dasar, di mana kuncinya adalah bidang basis data dan nilai adalah nilai yang harus dimiliki bidang tersebut. Sebagai gantinya, lebih disukai menggunakan EntityFieldQuery untuk mengambil daftar ID entitas yang dapat dimuat oleh fungsi ini.
$ reset : Apakah akan mereset cache internal untuk jenis entitas yang diminta.
Array objek entitas yang diindeks oleh id mereka. Ketika tidak ada hasil yang ditemukan, array kosong dikembalikan.
Jika Anda menginginkan cara yang sangat ringan, berdasarkan kinerja, untuk mendapatkan jenis simpul dari id simpul - Anda dapat menggunakan kueri pemilihan tunggal pada tabel simpul.
$type = db_query("SELECT type FROM {node} WHERE nid = :nid",
array(':nid' => $nid))->fetchField();
Dengan begitu, Anda tidak perlu memanggil seluruh sistem kait entitas, dengan entity_load dll.
Ini adalah kueri pemilihan tunggal menggunakan id simpul yang diindeks.